Commit Graph

22362 Commits

Author SHA1 Message Date
Douglas Gregor 3c267f7aa9 Rename SPECIAL_TYPE_jmp_buf and SPECIAL_TYPE_sigjmp_buf to follow the
convention of SPECIAL_TYPE*.

llvm-svn: 144403
2011-11-11 19:13:12 +00:00
Douglas Gregor 718292f260 Introduce basic support for parsing module map files.
Module map files provide a way to map between headers and modules, so
that we can layer a module system on top of existing headers without
changing those headers at all.

This commit introduces the module map file parser and the module map
that it generates, and wires up the module map file parser so that
we'll automatically find module map files as part of header
search. Note that we don't yet use the information stored in the
module map.

llvm-svn: 144402
2011-11-11 19:10:28 +00:00
Sean Callanan 45e1328f3f When importing an ObjCInterfaceDecl, ensure that
superclass information is imported before validating
it.  This fixes spurious "incompatible superclasses"
errors in LLDB.

llvm-svn: 144393
2011-11-11 17:39:52 +00:00
Richard Smith 6804be5a2e Constant expression evalation: const_cast support.
llvm-svn: 144382
2011-11-11 08:28:03 +00:00
Bob Wilson 1a9ad0fbee Search for libstdc++.dylib in llvm-gcc's files on darwin10. rdar://10419079
llvm-svn: 144381
2011-11-11 07:47:04 +00:00
Richard Smith 6049446c47 Reduce the constexpr stack pressure somewhat. Hopefully this will be enough to
please the buildbots.

llvm-svn: 144375
2011-11-11 05:48:57 +00:00
Richard Smith e97cbd7b3a Constant expression evaluation: support for constexpr member functions. This
reinstates r144273; a combination of r144333's fix for NoOp rvalue-to-lvalue
casts and some corresponding changes here resolve the regression which that
caused.

This patch also adds support for some additional forms of member function call,
along with additional testing.

llvm-svn: 144369
2011-11-11 04:05:33 +00:00
John McCall 03318c1dcf Don't apply NRVO to over-aligned variables. The caller only
guarantees alignment up to the ABI alignment of the return type.

llvm-svn: 144364
2011-11-11 03:57:31 +00:00
John McCall f1a3c2aee1 Be sure to insulate block literals from any cleanups in their
enclosing full-expressions.  It is somewhat amazing that 
this hasn't come up as a problem before.

llvm-svn: 144362
2011-11-11 03:19:12 +00:00
Eli Friedman 7771c835cd Add Linux multiarch include directories for mips/mipsel. Patch from Simon Atanasyan.
llvm-svn: 144358
2011-11-11 03:05:19 +00:00
Eli Friedman 4f64e1819b Make sure that restrict-qualifying an array actually adds a restrict qualifier. PR11354. (operator bool() is evil!)
llvm-svn: 144355
2011-11-11 02:00:42 +00:00
Douglas Gregor 197ac203af I predict that HeaderSearch will need the ability to generate
diagnostics in the future. Make it so.

llvm-svn: 144347
2011-11-11 00:35:06 +00:00
Francois Pichet f707ae6733 Move "Unqualified lookup into dependent bases of class templates" Microsoft specific behavior from -fms-extensions to -fms-compatibility.
llvm-svn: 144341
2011-11-11 00:12:11 +00:00
Ted Kremenek 61fb647fb4 [static analyzer] be more specific when running removeDeadBindings. Instead of seeing if the predecessor node was a non-StmtPoint, check if it is specifically a BlockEntrance node.
llvm-svn: 144340
2011-11-11 00:10:55 +00:00
Ted Kremenek e73d9ed1a2 Add top-level driver option '--serialize-diagnostics' for serialize compiler diagnostics to a file.
llvm-svn: 144339
2011-11-11 00:07:43 +00:00
Richard Smith 4a905b6799 Implicit casts from rvalue to lvalue are not meaningful. Don't accidentally add
them when performing a const conversion on the implicit object argument for a
member operator call on an rvalue.

No change to the testsuite: the test for this change is that the added
assertion does not fire any more.

llvm-svn: 144333
2011-11-10 23:32:36 +00:00
Ted Kremenek 20be0b4397 [static analyzer]: only call RemoveDeadBindings() when analyzing non-Expr stmts, entering a basic block, or analyzing non-consumed expressions. This sigificantly speeds up analysis time, and reduces analysis time down to 27% less than before we linearized the CFG.
llvm-svn: 144332
2011-11-10 23:26:10 +00:00
Pete Cooper 9d6055133b Add invariant.load metadata to loads from selector references. Allows these loads to later be moved/combined in the optimizer. Fixes <rdar://problem/6027699>
llvm-svn: 144318
2011-11-10 21:45:06 +00:00
Eli Friedman 5ceb8aa23e Add missing dependency for shared library build to CMakeLists. Patch by Johannes Obermayr.
llvm-svn: 144310
2011-11-10 20:07:09 +00:00
Devang Patel 63104ad417 Revert r144273. It causes clang self-host build failure.
llvm-svn: 144296
2011-11-10 17:47:39 +00:00
Benjamin Kramer 931ee8e727 serialized diagnostics: simplify code.
llvm-svn: 144277
2011-11-10 11:29:20 +00:00
John McCall f4beacd059 Whenever explicitly activating or deactivating a cleanup, we
need to provide a 'dominating IP' which is guaranteed to
dominate the (de)activation point but which cannot be avoided
along any execution path from the (de)activation point to
the push-point of the cleanup.  Using the entry block is
bad mojo.

llvm-svn: 144276
2011-11-10 10:43:54 +00:00
Richard Smith 656d49d890 Constant expression evaluation: support for constexpr member functions.
llvm-svn: 144273
2011-11-10 09:31:24 +00:00
John McCall e63abb5d2b Fix a subtle bug with cleanups: when activating
a previously-inactive cleanup, not only do we need a
flag variable, but we should also force the cleanup to
query the flag variable.  However, we only need to do
this when we're activating in a context that's
conditionally executed;  otherwise, we may safely
assume that the cleanup is dominated by the activation
point.

llvm-svn: 144271
2011-11-10 09:22:44 +00:00
Richard Smith 1c7047375a PR11148: Fix crash-on-invalid if an invalid member declaration is marked as
defaulted or deleted.

llvm-svn: 144270
2011-11-10 09:08:44 +00:00
Ted Kremenek d010ba4729 serialized diagnostics: implement full deserialization of clang diagnostics via the libclang API.
I've tested it on simple cases and it works.  Test cases to follow as well as a few tweaks.

llvm-svn: 144269
2011-11-10 08:43:12 +00:00
John McCall 08ef466048 Enter the cleanups for a block outside the enclosing
full-expression.  Naturally they're inactive before we enter
the block literal expression.  This restores the intended
behavior that blocks belong to their enclosing scope.

There's a useful -O0 / compile-time optimization that we're
missing here with activating cleanups following straight-line
code from their inactive beginnings.

llvm-svn: 144268
2011-11-10 08:15:53 +00:00
Richard Smith d62306a481 Constant expression evaluation: support for evaluation of structs and unions of
literal types, as well as derived-to-base casts for lvalues and
derived-to-virtual-base casts.

llvm-svn: 144265
2011-11-10 06:34:14 +00:00
David Blaikie 4d14296263 Removing unused initialization.
llvm-svn: 144264
2011-11-10 05:42:04 +00:00
John McCall 28fc70910f There's no good reason to track temporaries in ExprWithCleanups,
but it is sometimes useful to track blocks.  Do so.  Also
optimize the storage of these expressions.

llvm-svn: 144263
2011-11-10 05:35:25 +00:00
Richard Smith 5686e75a7b Temporary fix for a performance problem Eli spotted. The APValue representation
is currently too inefficient to allow us to use it for array initializers, but
fortunately we usually don't yet need to evaluate such initializers.

llvm-svn: 144260
2011-11-10 03:30:42 +00:00
Nick Lewycky 1679035122 Reflow lines, remove else-if after returns, rename variable "TydefContext" to
"TypedefContext". No functionality change.

llvm-svn: 144248
2011-11-10 00:34:02 +00:00
Eli Friedman f16beb3942 Fix some additional x86 intrinsics to use "I" (ICE) markings. Fix *mmintrin.h to take them into account.
<rdar://problem/10341145>

llvm-svn: 144246
2011-11-10 00:11:13 +00:00
Devang Patel 71510f6fb3 Remove unnecessary include.
llvm-svn: 144210
2011-11-09 21:08:24 +00:00
Fariborz Jahanian e0e6505660 objc rewriter: use a more specific name for local variable used
in fast enumeration rewrite. // rdar://10415026

llvm-svn: 144191
2011-11-09 17:41:43 +00:00
John McCall 29928fc563 We don't add ExprWithCleanups to the CFG, and getSVal looks
through it, so we should look through it for the live-values
analysis as well.

llvm-svn: 144190
2011-11-09 17:10:36 +00:00
Douglas Gregor 7240a95282 Define some built-ins macros on mips32 platform, from Simon Atanasyan!
llvm-svn: 144189
2011-11-09 15:17:16 +00:00
Nick Lewycky 6aad6df4d1 Reflow one line I missed in previous cleanup commit. No functionality change.
llvm-svn: 144168
2011-11-09 04:27:23 +00:00
Nick Lewycky 2219ef0b68 Minor cleanup, mostly reindenting. Remove one helper function that just called
the other helper functions, since we already differentiated the cases it was
testing between. No functionality change.

llvm-svn: 144167
2011-11-09 04:25:21 +00:00
Chandler Carruth 6e46ca2c10 Fix an issue that Duncan discovered on a specific (no longer current)
version of Ubuntu. It has a very broken multiarch configuration, and so
we need special logic to handle it correctly. Fixing and testing this
uncovered a few other trivial issues with the logic that are fixed as
well.

I added tests to cover this as it is hard to notice if you install
recent versions of the OS.

llvm-svn: 144165
2011-11-09 03:46:20 +00:00
John McCall 3a237aa31c Emit the copy and dipose helpers for ARC __strong
block-typed __block variables using objc_retainBlock
and objc_dispose.  Previously we were using
_Block_object_assign and _Block_object_destroy
with BLOCK_BYREF_CALLER, which causes the runtime
to completely ignore the retain and release.
In most cases this doesn't cause catastrophe
because the retain/release are balanced and
because the block in the variable was copied
upon assignment there.  However, the stack
copy of the variable will be released when
it goes out of scope, which is a problem if
that value was released due to an assignment
to the heap copy.  Similarly, a leak can occur
if the variable is assigned after the copy to
the heap.

llvm-svn: 144162
2011-11-09 03:17:26 +00:00
Douglas Gregor f39a8dd445 Don't crash when transforming an ill-formed pseudo-destructor
expression. Fixes PR11339.

llvm-svn: 144159
2011-11-09 02:19:47 +00:00
Douglas Gregor 407d1f9624 Introduce proper spacing after the Objective-C parameter qualifiers
(bycopy, inout, etc.). Fixes <rdar://problem/10402900>.

llvm-svn: 144157
2011-11-09 02:13:45 +00:00
Richard Smith f8120cad16 Constant expression evaluation: support for default arguments.
llvm-svn: 144156
2011-11-09 02:12:41 +00:00
Argyrios Kyrtzidis c137d0d62f [PCH] Fix reading from PCH of diagnostic pragmas.
In certain cases ASTReader would call the normal DiagnosticsEngine API to initialize
the state of diagnostic pragmas but DiagnosticsEngine would try to compare source locations
leading to crash because the main FileID was not yet initialized.

Yet another case of the ASTReader trying to use the normal APIs and inadvertently breaking
invariants. Fix this by having the ASTReader set up the internal state directly.

llvm-svn: 144153
2011-11-09 01:24:17 +00:00
Argyrios Kyrtzidis 3a8de5b560 Don't crash on invalid objc code.
llvm-svn: 144150
2011-11-09 00:22:48 +00:00
Argyrios Kyrtzidis 485eceed38 [arcmt] Take into account that all properties are strong-by-default now and fix the test.
llvm-svn: 144146
2011-11-08 23:09:34 +00:00
John McCall 9a54961e01 Bind function "r-values" as l-values when emitting them as
opaque values.  Silly C type system.

llvm-svn: 144144
2011-11-08 22:54:08 +00:00
Fariborz Jahanian 557fc9a99d objc: Don't crash on missing @interface decl.
// rdar://10415026

llvm-svn: 144143
2011-11-08 22:51:27 +00:00
Argyrios Kyrtzidis e4a38a73fd [arcmt] Now that readonly properties are strong-by-default, do not add redundant 'strong'.
llvm-svn: 144136
2011-11-08 22:10:58 +00:00