]> granicus.if.org Git - clang/log
clang
11 years agoRemove useGlobalsForAutomaticVariables.
Rafael Espindola [Tue, 26 Mar 2013 18:41:47 +0000 (18:41 +0000)]
Remove useGlobalsForAutomaticVariables.

It is unused since pic support went away.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178055 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-cxxabi] Give the MS inheritance attributes a base class
Reid Kleckner [Tue, 26 Mar 2013 18:30:28 +0000 (18:30 +0000)]
[ms-cxxabi] Give the MS inheritance attributes a base class

Required making a handful of changes to the table generator.  Also adds
an unspecified inheritance attribute.  This opens the path for us to
apply these attributes to C++ records implicitly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178054 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix uninitialized read of CalleeWithThisReturn.
Manman Ren [Tue, 26 Mar 2013 18:29:15 +0000 (18:29 +0000)]
Fix uninitialized read of CalleeWithThisReturn.

Initialize CalleeWithThisReturn to 0 in the constructor.
Also revert r170815 since checking CalleeWithThisReturn is faster.

PR15598

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178053 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a crasher by reporting a fatal error if we're unable to create the target
Chad Rosier [Tue, 26 Mar 2013 18:01:48 +0000 (18:01 +0000)]
Fix a crasher by reporting a fatal error if we're unable to create the target
machine and one is required.
Part of rdar://13295753

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178042 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd PRFCHW intrinsic support
Michael Liao [Tue, 26 Mar 2013 17:52:08 +0000 (17:52 +0000)]
Add PRFCHW intrinsic support

- Add head 'prfchwintrin.h' to define '_m_prefetchw' which is mapped to
  LLVM/clang prefetch builtin
- Add option '-mprfchw' to enable PRFCHW feature and pre-define '__PRFCHW__'
  macro

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178041 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[Preprocessor/Modules] Separate the macro directives kinds into their own MacroDirect...
Argyrios Kyrtzidis [Tue, 26 Mar 2013 17:17:01 +0000 (17:17 +0000)]
[Preprocessor/Modules] Separate the macro directives kinds into their own MacroDirective's subclasses.

For each macro directive (define, undefine, visibility) have a separate object that gets chained
to the macro directive history. This has several benefits:

-No need to mutate a MacroDirective when there is a undefine/visibility directive. Stuff like
 PPMutationListener become unnecessary.
-No need to keep extra source locations for the undef/visibility locations for the define directive object
 (which is the majority of the directives)
-Much easier to hide/unhide a section in the macro directive history.
-Easier to track the effects of the directives across different submodules.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178037 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-cxxabi] Mangle vector types
Reid Kleckner [Tue, 26 Mar 2013 16:56:59 +0000 (16:56 +0000)]
[ms-cxxabi] Mangle vector types

Summary:
The only vector types a user can pass from MSVC code to clang code are
the ones from *mmintrin.h, so we only have to match the MSVC mangling
for these types.  MSVC mangles the __m128 family of types as tag types,
which we match.  For other vector types, we emit a unique tag type
mangling that won't match anything produced by MSVC.

Reviewers: rjmccall

CC: chandlerc, timurrrr, cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D576

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178036 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix uninitialized read of CalleeWithThisReturn.
Evgeniy Stepanov [Tue, 26 Mar 2013 13:44:29 +0000 (13:44 +0000)]
Fix uninitialized read of CalleeWithThisReturn.

CalleeWithThisReturn can be left initialized if HasThisReturn() is false.
This change reverses the order of checks in EmitFunctionEpilog such that
CalleeWithThisReturn is only examined when it has a meaningful value.

Found with MemorySanitizer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178015 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoActually mark ASan-unfriendly test as XFAIL
Alexey Samsonov [Tue, 26 Mar 2013 08:45:29 +0000 (08:45 +0000)]
Actually mark ASan-unfriendly test as XFAIL

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177997 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd asan/msan to the list of available features in LIT test runner. Mark ASan-unfrien...
Alexey Samsonov [Tue, 26 Mar 2013 08:28:18 +0000 (08:28 +0000)]
Add asan/msan to the list of available features in LIT test runner. Mark ASan-unfriendly test as XFAIL.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177995 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoManually specify the link dependencies. Turns out that all the work on
Chandler Carruth [Tue, 26 Mar 2013 03:45:48 +0000 (03:45 +0000)]
Manually specify the link dependencies. Turns out that all the work on
LLVMBuild stuff didn't actually provide a single place for dependencies,
it just added a third place.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177989 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoHandle CXXOperatorCallExpr when checking self referrnce during initialization of
Richard Trieu [Tue, 26 Mar 2013 03:41:40 +0000 (03:41 +0000)]
Handle CXXOperatorCallExpr when checking self referrnce during initialization of
class types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177987 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThe IRReader header is now part of its own library. Update the include
Chandler Carruth [Tue, 26 Mar 2013 02:25:54 +0000 (02:25 +0000)]
The IRReader header is now part of its own library. Update the include
line and the library dependencies to reflect this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177972 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove FIXMEs: these are covered by a core issue which we don't yet implement
Richard Smith [Tue, 26 Mar 2013 01:17:18 +0000 (01:17 +0000)]
Remove FIXMEs: these are covered by a core issue which we don't yet implement
(but we happen to get this part right).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177958 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoImplement special-case name lookup for inheriting constructors: member
Richard Smith [Tue, 26 Mar 2013 01:15:19 +0000 (01:15 +0000)]
Implement special-case name lookup for inheriting constructors: member
using-declarations with names which look constructor-like are interpreted as
constructor names.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177957 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove some no-op static_casts.
Richard Smith [Tue, 26 Mar 2013 00:54:11 +0000 (00:54 +0000)]
Remove some no-op static_casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177954 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoObjective-C: Property declaration overiding one in
Fariborz Jahanian [Mon, 25 Mar 2013 23:59:42 +0000 (23:59 +0000)]
Objective-C: Property declaration overiding one in
its super class or protocols inherit their
availability/deprecated attribute. // rdar://13467644

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177948 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoclang/test/Index/crash-recovery-code-complete.c: Mark it as XFAIL:win32 for now.
NAKAMURA Takumi [Mon, 25 Mar 2013 23:49:11 +0000 (23:49 +0000)]
clang/test/Index/crash-recovery-code-complete.c: Mark it as XFAIL:win32 for now.

I know MemoryBuffer might affect this. Still investigating.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177946 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13395022> Strip references when extracting an initializer_list's...
Douglas Gregor [Mon, 25 Mar 2013 23:47:01 +0000 (23:47 +0000)]
<rdar://problem/13395022> Strip references when extracting an initializer_list's element type during application of an initialization sequence.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177944 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13185264> Don't crash when attempting to redundantly initialize a...
Douglas Gregor [Mon, 25 Mar 2013 23:28:23 +0000 (23:28 +0000)]
<rdar://problem/13185264> Don't crash when attempting to redundantly initialize a member of an anonymous union.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177941 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix layering violation harder.
Matt Beaumont-Gay [Mon, 25 Mar 2013 23:19:32 +0000 (23:19 +0000)]
Fix layering violation harder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177940 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13358795> Teach CMake to check Subversion version information at...
Douglas Gregor [Mon, 25 Mar 2013 23:16:38 +0000 (23:16 +0000)]
<rdar://problem/13358795> Teach CMake to check Subversion version information at build time, not configure time.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177939 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix testcase.
Ted Kremenek [Mon, 25 Mar 2013 23:05:40 +0000 (23:05 +0000)]
Fix testcase.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177934 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFor printf checking, handle nested typedefs for darwin-specific checking.
Ted Kremenek [Mon, 25 Mar 2013 22:28:37 +0000 (22:28 +0000)]
For printf checking, handle nested typedefs for darwin-specific checking.

Fixes <rdar://problem/13491605>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177931 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13459871> Allow forward declaration of enums with a fixed underlying...
Douglas Gregor [Mon, 25 Mar 2013 22:22:35 +0000 (22:22 +0000)]
<rdar://problem/13459871> Allow forward declaration of enums with a fixed underlying type in Objective-C (as well as C++11).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177930 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove local path from test.
Douglas Gregor [Mon, 25 Mar 2013 21:52:42 +0000 (21:52 +0000)]
Remove local path from test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177925 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse <time.h> rather than <sys/time.h>
Douglas Gregor [Mon, 25 Mar 2013 21:51:16 +0000 (21:51 +0000)]
Use <time.h> rather than <sys/time.h>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177924 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse xargs rather than
Douglas Gregor [Mon, 25 Mar 2013 21:49:54 +0000 (21:49 +0000)]
Use xargs rather than

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177923 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a layering violation introduced in r177705.
Matt Beaumont-Gay [Mon, 25 Mar 2013 21:32:02 +0000 (21:32 +0000)]
Fix a layering violation introduced in r177705.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177922 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse 'touch -t', which both BSD and Linux support.
Douglas Gregor [Mon, 25 Mar 2013 21:27:57 +0000 (21:27 +0000)]
Use 'touch -t', which both BSD and Linux support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177921 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoTry harder to be signal-safe inside our signal handler. The most prominent behavioural
Nick Lewycky [Mon, 25 Mar 2013 21:24:30 +0000 (21:24 +0000)]
Try harder to be signal-safe inside our signal handler. The most prominent behavioural
difference is that we no longer clean the token before emitting it. This fixes a bug where
clang hangs in the middle of crashing because the crash handler calls malloc from inside
a crash that happened inside of free.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177919 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13434605> Periodically prune the module cache so that it does not...
Douglas Gregor [Mon, 25 Mar 2013 21:19:16 +0000 (21:19 +0000)]
<rdar://problem/13434605> Periodically prune the module cache so that it does not grow forever.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177918 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoCorrect indentation. No functionality change.
Nick Lewycky [Mon, 25 Mar 2013 21:10:14 +0000 (21:10 +0000)]
Correct indentation. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177916 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoEmit an error message instead of crashing when dereferencing an incomplete pointer...
Bill Wendling [Mon, 25 Mar 2013 21:09:49 +0000 (21:09 +0000)]
Emit an error message instead of crashing when dereferencing an incomplete pointer type.

If the ASM statement is dereferencing an incomplete pointer type, issue an error
instead of crashing.
<rdar://problem/12700799>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177915 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoIR-gen should not generate an MMX types unless the code is explicitly using MMX
Chad Rosier [Mon, 25 Mar 2013 21:00:27 +0000 (21:00 +0000)]
IR-gen should not generate an MMX types unless the code is explicitly using MMX
intrinsics.
rdar://13213542

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177911 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Set concrete offset bindings to UnknownVal when processing symbolic offset...
Anna Zaks [Mon, 25 Mar 2013 20:43:24 +0000 (20:43 +0000)]
[analyzer] Set concrete offset bindings to UnknownVal when processing symbolic offset binding, even if no bindings are present.

This addresses an undefined value false positive from concreteOffsetBindingIsInvalidatedBySymbolicOffsetAssignment.

Fixes PR14877; radar://12991168.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177905 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdded PR number for failing win64 tests.
Fariborz Jahanian [Mon, 25 Mar 2013 18:56:45 +0000 (18:56 +0000)]
Added PR number for failing win64 tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177886 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRe-add clang-format tests to clang/test.
Daniel Jasper [Mon, 25 Mar 2013 09:14:25 +0000 (09:14 +0000)]
Re-add clang-format tests to clang/test.

Also now use -strict-whitespace as the tests are confusing otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177853 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Adds cplusplus.NewDelete checker that check for memory leaks, double free...
Anton Yartsev [Mon, 25 Mar 2013 01:35:45 +0000 (01:35 +0000)]
[analyzer] Adds cplusplus.NewDelete checker that check for memory leaks, double free, and use-after-free problems of memory managed by new/delete.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177849 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Teach ConstraintManager to ignore NonLoc <> NonLoc comparisons.
Jordan Rose [Sun, 24 Mar 2013 20:25:22 +0000 (20:25 +0000)]
[analyzer] Teach ConstraintManager to ignore NonLoc <> NonLoc comparisons.

These aren't generated by default, but they are needed when either side of
the comparison is tainted.

Should fix our internal buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177846 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSimplify code. No functionality change.
Benjamin Kramer [Sun, 24 Mar 2013 16:04:55 +0000 (16:04 +0000)]
Simplify code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177842 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoReject -no-integrated-as on windows.
Rafael Espindola [Sun, 24 Mar 2013 15:06:53 +0000 (15:06 +0000)]
Reject -no-integrated-as on windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177840 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGenerate metadata to implement the -cl-kernel-arg-info option.
Guy Benyei [Sun, 24 Mar 2013 13:58:12 +0000 (13:58 +0000)]
Generate metadata to implement the -cl-kernel-arg-info option.
OpenCL 1.2 spec. 5.7.3.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177839 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDon't actually invoke codegen in driver test.
Benjamin Kramer [Sun, 24 Mar 2013 11:30:15 +0000 (11:30 +0000)]
Don't actually invoke codegen in driver test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177838 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake clang to mark static stack allocations with lifetime markers to enable a more...
Nadav Rotem [Sat, 23 Mar 2013 06:43:35 +0000 (06:43 +0000)]
Make clang to mark static stack allocations with lifetime markers to enable a more aggressive stack coloring.
Patch by John McCall with help by Shuxin Yang.
rdar://13115369

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177819 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert svn r176894 and r177658.
Bob Wilson [Sat, 23 Mar 2013 05:17:59 +0000 (05:17 +0000)]
Revert svn r176894 and r177658.

Changing -ccc-install-dir to affect cc1's resource-dir setting broke our
internal LNT tests. After discussing the situation with Jim, we've decided to
pursue an alternate approach. We really want the resource-dir to be located
relative to clang, even when using -ccc-install-dir, but we're going to
add a fallback setting for the libc++ headers if they don't exist alongside
the compiler.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177815 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUnder ARC, when we're passing the address of a strong variable
John McCall [Sat, 23 Mar 2013 02:35:54 +0000 (02:35 +0000)]
Under ARC, when we're passing the address of a strong variable
to an out-parameter using the indirect-writeback conversion,
and we copied the current value of the variable to the temporary,
make sure that we register an intrinsic use of that value with
the optimizer so that the value won't get released until we have
a chance to retain it.

rdar://13195034

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177813 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoStrip off local qualifiers when converting from RecordType to
Richard Trieu [Sat, 23 Mar 2013 01:38:36 +0000 (01:38 +0000)]
Strip off local qualifiers when converting from RecordType to
TemplateSpecializationType during template type diffing.  This allows the
correct printing of diffing qualifiers on templates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177809 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Teach constraint managers about unsigned comparisons.
Jordan Rose [Sat, 23 Mar 2013 01:21:33 +0000 (01:21 +0000)]
[analyzer] Teach constraint managers about unsigned comparisons.

In C, comparisons between signed and unsigned numbers are always done in
unsigned-space. Thus, we should know that "i >= 0U" is always true, even
if 'i' is signed. Similarly, "u >= 0" is also always true, even though '0'
is signed.

Part of <rdar://problem/13239003> (false positives related to std::vector)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177806 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Loc-Loc operations (subtraction or comparison) produce a NonLoc.
Jordan Rose [Sat, 23 Mar 2013 01:21:29 +0000 (01:21 +0000)]
[analyzer] Loc-Loc operations (subtraction or comparison) produce a NonLoc.

For two concrete locations, we were producing another concrete location and
then casting it to an integer. We should just create a nonloc::ConcreteInt
to begin with.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177805 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] CmpRuns.py: Accept single files as input.
Jordan Rose [Sat, 23 Mar 2013 01:21:26 +0000 (01:21 +0000)]
[analyzer] CmpRuns.py: Accept single files as input.

This allows us to compare two direct invocations of the analyzer on a
single source file without having to wrap the output plists in their
own directories.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177804 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Also transform "a < b" to "(b - a) > 0" in the constraint manager.
Jordan Rose [Sat, 23 Mar 2013 01:21:23 +0000 (01:21 +0000)]
[analyzer] Also transform "a < b" to "(b - a) > 0" in the constraint manager.

We can support the full range of comparison operations between two locations
by canonicalizing them as subtraction, as in the previous commit.

This won't work (well) if either location includes an offset, or (again)
if the comparisons are not consistent about which region comes first.

<rdar://problem/13239003>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177803 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd reverseComparisonOp and negateComparisonOp to BinaryOperator.
Jordan Rose [Sat, 23 Mar 2013 01:21:20 +0000 (01:21 +0000)]
Add reverseComparisonOp and negateComparisonOp to BinaryOperator.

...and adopt them in the analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177802 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Translate "a != b" to "(b - a) != 0" in the constraint manager.
Jordan Rose [Sat, 23 Mar 2013 01:21:16 +0000 (01:21 +0000)]
[analyzer] Translate "a != b" to "(b - a) != 0" in the constraint manager.

Canonicalizing these two forms allows us to better model containers like
std::vector, which use "m_start != m_finish" to implement empty() but
"m_finish - m_start" to implement size(). The analyzer should have a
consistent interpretation of these two symbolic expressions, even though
it's not properly reasoning about either one yet.

The other unfortunate thing is that while the size() expression will only
ever be written "m_finish - m_start", the comparison may be written
"m_finish == m_start" or "m_start == m_finish". Right now the analyzer does
not attempt to canonicalize those two expressions, since it doesn't know
which length expression to pick. Doing this correctly will probably require
implementing unary minus as a new SymExpr kind (<rdar://problem/12351075>).

For now, the analyzer inverts the order of arguments in the comparison to
build the subtraction, on the assumption that "begin() != end()" is
written more often than "end() != begin()". This is purely speculation.

<rdar://problem/13239003>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177801 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Use SymExprs to represent '<loc> - <loc>' and '<loc> == <loc>'.
Jordan Rose [Sat, 23 Mar 2013 01:21:05 +0000 (01:21 +0000)]
[analyzer] Use SymExprs to represent '<loc> - <loc>' and '<loc> == <loc>'.

We just treat this as opaque symbols, but even that allows us to handle
simple cases where the same condition is tested twice. This is very common
in the STL, which means that any project using the STL gets spurious errors.

Part of <rdar://problem/13239003>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177800 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agodocumentation parsing: when providing code completion comment
Fariborz Jahanian [Sat, 23 Mar 2013 01:10:45 +0000 (01:10 +0000)]
documentation parsing: when providing code completion comment
for a getter used in property-dot syntax, if geter has its own
comment use it. // rdar://12791315

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177797 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Warn when a nil key or value are passed to NSMutableDictionary and ensure...
Anna Zaks [Sat, 23 Mar 2013 00:39:21 +0000 (00:39 +0000)]
[analyzer] Warn when a nil key or value are passed to NSMutableDictionary and ensure it works with subscripting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177789 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Correct the stale comment.
Anna Zaks [Sat, 23 Mar 2013 00:39:17 +0000 (00:39 +0000)]
[analyzer] Correct the stale comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177788 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoIf a .syms file is available alongside a sanitizer runtime, pass it to the
Richard Smith [Sat, 23 Mar 2013 00:30:08 +0000 (00:30 +0000)]
If a .syms file is available alongside a sanitizer runtime, pass it to the
linker via --dynamic-list instead of using --export-dynamic. This reduces the
size of the dynamic symbol table, and thus of the binary (in some cases by up
to ~30%).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177783 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUse RequireCompleteType() instead of isIncompleteType().
Bill Wendling [Fri, 22 Mar 2013 21:33:46 +0000 (21:33 +0000)]
Use RequireCompleteType() instead of isIncompleteType().

isIncompleteType() returns true or false for template types depending on whether
the type is instantiated yet. In this context, that's arbitrary. The better way
to check for a complete type is RequireCompleteType().

Thanks to Eli Friedman for noticing this!

<rdar://problem/12700799>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177768 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd test case for PR 12921.
Ted Kremenek [Fri, 22 Mar 2013 21:30:22 +0000 (21:30 +0000)]
Add test case for PR 12921.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177767 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13479539> Only rebuild the global module cache when we're allowed to.
Douglas Gregor [Fri, 22 Mar 2013 21:26:48 +0000 (21:26 +0000)]
<rdar://problem/13479539> Only rebuild the global module cache when we're allowed to.

This eliminates excessive rebuilds of the global module cache.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177766 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRevert "[analyzer] Break cycles (optionally) when trimming an ExplodedGraph."
Jordan Rose [Fri, 22 Mar 2013 21:15:33 +0000 (21:15 +0000)]
Revert "[analyzer] Break cycles (optionally) when trimming an ExplodedGraph."

The algorithm used here was ridiculously slow when a potential back-edge
pointed to a node that already had a lot of successors. The previous commit
makes this feature unnecessary anyway.

This reverts r177468 / f4cf6b10f863b9bc716a09b2b2a8c497dcc6aa9b.

Conflicts:

lib/StaticAnalyzer/Core/BugReporter.cpp

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177765 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Use a forward BFS instead of a reverse BFS to find shortest paths.
Jordan Rose [Fri, 22 Mar 2013 21:15:28 +0000 (21:15 +0000)]
[analyzer] Use a forward BFS instead of a reverse BFS to find shortest paths.

For a given bug equivalence class, we'd like to emit the report with the
shortest path. So far to do this we've been trimming the ExplodedGraph to
only contain relevant nodes, then doing a reverse BFS (starting at all the
error nodes) to find the shortest paths from the root. However, this is
fairly expensive when we are suppressing many bug reports in the same
equivalence class.

r177468-9 tried to solve this problem by breaking cycles during graph
trimming, then updating the BFS priorities after each suppressed report
instead of recomputing the whole thing. However, breaking cycles is not
a cheap operation because an analysis graph minus cycles is still a DAG,
not a tree.

This fix changes the algorithm to do a single forward BFS (starting from the
root) and to use that to choose the report with the shortest path by looking
at the error nodes with the lowest BFS priorities. This was Anna's idea, and
has the added advantage of requiring no update step: we can just pick the
error node with the next lowest priority to produce the next bug report.

<rdar://problem/13474689>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177764 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Fix test to actually test what was intended.
Jordan Rose [Fri, 22 Mar 2013 21:15:26 +0000 (21:15 +0000)]
[analyzer] Fix test to actually test what was intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177763 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] Fix ExprEngine::ViewGraph to handle C++ initializers.
Jordan Rose [Fri, 22 Mar 2013 21:15:16 +0000 (21:15 +0000)]
[analyzer] Fix ExprEngine::ViewGraph to handle C++ initializers.

Debugging aid only, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177762 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[PCH/Modules] De/Serialize MacroInfos separately than MacroDirectives.
Argyrios Kyrtzidis [Fri, 22 Mar 2013 21:12:57 +0000 (21:12 +0000)]
[PCH/Modules] De/Serialize MacroInfos separately than MacroDirectives.

-Serialize the macro directives history into its own section
-Get rid of the macro updates section
-When de/serializing an identifier from a module, associate only one macro per
 submodule that defined+exported it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177761 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[modules] When a MacroInfo object is deserialized, allocate and store its submodule ID.
Argyrios Kyrtzidis [Fri, 22 Mar 2013 21:12:51 +0000 (21:12 +0000)]
[modules] When a MacroInfo object is deserialized, allocate and store its submodule ID.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177760 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[ms-cxxabi] Implement member data pointers for non-dynamic classes
Reid Kleckner [Fri, 22 Mar 2013 19:02:54 +0000 (19:02 +0000)]
[ms-cxxabi] Implement member data pointers for non-dynamic classes

Summary:
For non-dynamic classes (no virtual bases), member data pointers are
simple offsets from the base of the record.  Dynamic classes use an
aggregate for member data pointers and are therefore currently
unsupported.

Unlike Itanium, the ms ABI uses 0 to represent null for polymorphic
classes.  Non-polymorphic classes use -1 like Itanium, since 0 is a
valid field offset.

Reviewers: rjmccall

CC: timurrrr, cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D558

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177753 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13479539> Simplify ModuleManager/GlobalModuleIndex interaction to...
Douglas Gregor [Fri, 22 Mar 2013 18:50:14 +0000 (18:50 +0000)]
<rdar://problem/13479539> Simplify ModuleManager/GlobalModuleIndex interaction to eliminate a pile of extraneous stats().

The refactoring in r177367 introduced a serious performance bug where
the "lazy" resolution of module file names in the global module index
to actual module file entries in the module manager would perform
repeated negative stats(). The new interaction requires the module
manager to inform the global module index when a module file has been
loaded, eliminating the extraneous stat()s and a bunch of bookkeeping
on both sides.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177750 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agodocumentation parsing. Provide code completion comment
Fariborz Jahanian [Fri, 22 Mar 2013 17:55:27 +0000 (17:55 +0000)]
documentation parsing. Provide code completion comment
for self.GetterName where GetterName is the getter method
for a property with name different from the property name
(declared via a property getter attribute) // rdar://12791315

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177744 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThese tests fail on our Window64 machine.
Fariborz Jahanian [Fri, 22 Mar 2013 17:42:39 +0000 (17:42 +0000)]
These tests fail on our Window64 machine.
Feel free to revert them (or let me know and I will revert)
if they shouldn't be.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177743 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoBetter fix for r177725.
Daniel Jasper [Fri, 22 Mar 2013 16:55:40 +0000 (16:55 +0000)]
Better fix for r177725.

It turns out that

-foo;

can be an objective C method declaration. So instead of the previous
solution, recognize objective C methods only if we are in a declaration
scope.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177740 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAlign comments to surrounding unformatted comments.
Daniel Jasper [Fri, 22 Mar 2013 16:25:51 +0000 (16:25 +0000)]
Align comments to surrounding unformatted comments.

Before:
int a; // not formatted
// formatting this line only

After:
int a; // not formatted
       // formatting this line only

This makes clang-format stable independent of whether the whole
file or single lines are formatted in most cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177739 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[cxxabi] Get ptrdiff_t from the CodeGenModule instead of caching it
Reid Kleckner [Fri, 22 Mar 2013 16:13:10 +0000 (16:13 +0000)]
[cxxabi] Get ptrdiff_t from the CodeGenModule instead of caching it

As the comment says, it's a little silly to cache it in the ABI code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177738 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate docs after moving clang-format from clang-tools-extra to cfe.
Daniel Jasper [Fri, 22 Mar 2013 12:44:20 +0000 (12:44 +0000)]
Update docs after moving clang-format from clang-tools-extra to cfe.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177729 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd clang-format to the corresponding Makefile.
Daniel Jasper [Fri, 22 Mar 2013 11:43:51 +0000 (11:43 +0000)]
Add clang-format to the corresponding Makefile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177727 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMore precisely recognize ObjC method declarations.
Daniel Jasper [Fri, 22 Mar 2013 10:44:43 +0000 (10:44 +0000)]
More precisely recognize ObjC method declarations.

Otherwise, +/- and the beginning of constants can be recognized
incorrectly.

Before:  #define A - 1
After:   #define A -1

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177725 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoDocumentation: fix a typo and formatting
Dmitri Gribenko [Fri, 22 Mar 2013 10:25:15 +0000 (10:25 +0000)]
Documentation: fix a typo and formatting

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177722 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix DeclRefExpr::getFoundDecl() for usages by reference.
Daniel Jasper [Fri, 22 Mar 2013 10:01:35 +0000 (10:01 +0000)]
Fix DeclRefExpr::getFoundDecl() for usages by reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177721 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMake clang-format understand more line comments.
Daniel Jasper [Fri, 22 Mar 2013 10:01:29 +0000 (10:01 +0000)]
Make clang-format understand more line comments.

Apparently one needs to set LangOptions.LineComment.

Before "//* */" got reformatted to "/ /* */" as the lexer was returning
the token sequence (slash, comment). This could also lead to weird other
stuff, e.g. for people that like to using comments like:
//****************

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177720 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAdd future directions for modules
Douglas Gregor [Fri, 22 Mar 2013 07:08:56 +0000 (07:08 +0000)]
Add future directions for modules

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177707 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMore modules documentation, including the straw-man import declaration syntax and...
Douglas Gregor [Fri, 22 Mar 2013 07:05:07 +0000 (07:05 +0000)]
More modules documentation, including the straw-man import declaration syntax and "how to modularize a platform".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177706 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoOpenMP threadprivate directive parsing and semantic analysis
Alexey Bataev [Fri, 22 Mar 2013 06:34:35 +0000 (06:34 +0000)]
OpenMP threadprivate directive parsing and semantic analysis

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177705 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoMore documentation on the module map language.
Douglas Gregor [Fri, 22 Mar 2013 06:21:35 +0000 (06:21 +0000)]
More documentation on the module map language.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177704 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agotest commit
Alexey Bataev [Fri, 22 Mar 2013 05:24:29 +0000 (05:24 +0000)]
test commit

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177701 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoWarn about attempts to reinterpret_cast between two types that are
John McCall [Fri, 22 Mar 2013 02:58:14 +0000 (02:58 +0000)]
Warn about attempts to reinterpret_cast between two types that are
hierarchy-related at a possibly nonzero offset.

Patch by Alexander Zinenko!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177698 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix a crash-on-valid where a block capture copy expression was
John McCall [Fri, 22 Mar 2013 02:10:40 +0000 (02:10 +0000)]
Fix a crash-on-valid where a block capture copy expression was
picking up cleanups from earlier in the statement.  Also fix a
crash-on-invalid where a reference to an invalid decl from an
enclosing scope was causing an expression to fail to build, but
only *after* a cleanup was registered from that statement,
causing an assertion downstream.

The crash-on-valid is rdar://13459289.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177692 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoubsan: Pass floating-point arguments to the runtime by value if they fit the
Richard Smith [Fri, 22 Mar 2013 00:47:07 +0000 (00:47 +0000)]
ubsan: Pass floating-point arguments to the runtime by value if they fit the
value argument. If not, be sure we don't accidentally use a dynamic alloca.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177690 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13479214> Make Clang's <stddef.h> robust against system headers defin...
Douglas Gregor [Fri, 22 Mar 2013 00:10:49 +0000 (00:10 +0000)]
<rdar://problem/13479214> Make Clang's <stddef.h> robust against system headers defining size_t/ptrdiff_t/wchar_t.

Clang's <stddef.h> provides definitions for the C standard library
types size_t, ptrdiff_t, and wchar_t. However, the system's C standard
library headers tend to provide the same typedefs, and the two
generally avoid each other using the macros
_SIZE_T/_PTRDIFF_T/_WCHAR_T. With modules, however, we need to see
*all* of the places where these types are defined, so provide the
typedefs (ignoring the macros) when modules are enabled.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177686 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).
Jordan Rose [Thu, 21 Mar 2013 23:14:26 +0000 (23:14 +0000)]
[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).

PR14963

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177678 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate debug info test case for more incoming DIBuilder changes
David Blaikie [Thu, 21 Mar 2013 23:07:47 +0000 (23:07 +0000)]
Update debug info test case for more incoming DIBuilder changes

Switching the DIFile field in DISubprogram to refer to the raw
filename/directory pair instead of a DIFile.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177676 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoUpdate debug info test case for an incoming change to DIBuilder in LLVM
David Blaikie [Thu, 21 Mar 2013 22:28:46 +0000 (22:28 +0000)]
Update debug info test case for an incoming change to DIBuilder in LLVM

(this will produce some transient test failure/skew)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177673 91177308-0d34-0410-b5e6-96231b3b80d8

11 years ago<rdar://problem/13477190> Give the Clang module cache directory some structure, so...
Douglas Gregor [Thu, 21 Mar 2013 21:48:48 +0000 (21:48 +0000)]
<rdar://problem/13477190> Give the Clang module cache directory some structure, so it's easier to find.

We now put the Clang module cache in
<system-temp-directory>/org.llvm.clang/ModuleCache. Perhaps some day
there will be other caches under <system-temp-directory>/org.llvm.clang>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177671 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoFix indentation
David Blaikie [Thu, 21 Mar 2013 21:35:15 +0000 (21:35 +0000)]
Fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177665 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoObjective-C: Tighten the rules when warning
Fariborz Jahanian [Thu, 21 Mar 2013 20:50:53 +0000 (20:50 +0000)]
Objective-C: Tighten the rules when warning
is issused for on overriding 'readwrite'
property which is not auto-synthesized.
Buttom line is that if hueristics determine
that there will be a user implemented setter,
no warning will be issued. // rdar://13388503

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177662 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoGeneralize debug info tests to be forward compatible with future DISubprogram changes
David Blaikie [Thu, 21 Mar 2013 20:20:15 +0000 (20:20 +0000)]
Generalize debug info tests to be forward compatible with future DISubprogram changes

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177659 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoThis ugly regex is required because on Windows, the paths come out as \\ delimited...
Aaron Ballman [Thu, 21 Mar 2013 20:12:19 +0000 (20:12 +0000)]
This ugly regex is required because on Windows, the paths come out as \\ delimited instead of / delimited.  Fixes a test breakage since r176894.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177658 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoRemove unused variable.
Benjamin Kramer [Thu, 21 Mar 2013 19:47:38 +0000 (19:47 +0000)]
Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177657 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAvoid warnings from compilers that think you can drop off the end of a fully covered...
Benjamin Kramer [Thu, 21 Mar 2013 19:45:46 +0000 (19:45 +0000)]
Avoid warnings from compilers that think you can drop off the end of a fully covered switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177656 91177308-0d34-0410-b5e6-96231b3b80d8