Fariborz Jahanian
8fb87aec78
Patch implements passing arrays to functions expecting
...
vla. Implements pr7827.
llvm-svn: 114737
2010-09-24 17:30:16 +00:00
Daniel Dunbar
19964dbe3b
IRgen/ABI/ARM: Return large vectors in memory.
...
llvm-svn: 114619
2010-09-23 01:54:32 +00:00
Daniel Dunbar
b34b08098c
IRgen/ABI/ARM: Trust the backend to pass vectors correctly for the given ABI.
...
- Therefore, we can lower out the NEON wrapper structs and pass the vectors
directly. This makes a huge difference in the cleanliness of the IR after
optimization.
- I will trust, but verify, via future ABITest testing (for APCS-GNU, at
least).
llvm-svn: 114618
2010-09-23 01:54:28 +00:00
Chris Lattner
b2f659b7a0
fix the rest of rdar://8461279 - clang miscompiles address-space qualified atomics
...
llvm-svn: 114503
2010-09-21 23:40:48 +00:00
Chris Lattner
c9066d3072
same bug as before, this time with __sync_val_compare_and_swap.
...
llvm-svn: 114502
2010-09-21 23:35:30 +00:00
Chris Lattner
7cf46bfda0
fix __sync_bool_compare_and_swap to work with address-space qualified types.
...
llvm-svn: 114498
2010-09-21 23:24:52 +00:00
Fariborz Jahanian
521c72c756
Fixes an IRgen ICE due to cast of null pointer to
...
a vla type (fixes pr7827).
llvm-svn: 114495
2010-09-21 22:53:33 +00:00
Fariborz Jahanian
cb75021034
IRgen for gnu extension's conditional lvalue expression
...
with missing LHS. radar 8453812. Executable test is checked
into llvm test suite.
llvm-svn: 114457
2010-09-21 18:32:21 +00:00
Benjamin Kramer
3e0c527dcc
Adjust for debug info API change.
...
llvm-svn: 114438
2010-09-21 15:59:59 +00:00
Fariborz Jahanian
8162d4ad31
Implements in IRgen gnu extensions missing LHS for
...
complex conditionals. Radar 8453812.
llvm-svn: 114376
2010-09-20 23:50:22 +00:00
Nate Begeman
abb5a7370d
Check in support for OpenCL conditional operator on vector types.
...
llvm-svn: 114371
2010-09-20 22:41:17 +00:00
Fariborz Jahanian
4fbf4af0f6
Fixes IRgen bug in objc++ reference binding of a
...
getter expression.
Fixes // rdar://8437240
llvm-svn: 114299
2010-09-18 20:47:25 +00:00
Gabor Greif
bf98608a3d
do not rely on the implicit-dereference semantics of dyn_cast_or_null
...
llvm-svn: 114281
2010-09-18 13:00:17 +00:00
John McCall
f09d96f76d
Adjust a fixup's starting branch if it's being resolved because
...
it reached the outermost scope and it hasn't yet been forwarded
to a cleanup. Fixed PR8175.
llvm-svn: 114259
2010-09-18 02:24:39 +00:00
John Thompson
1224061281
Added '|' delimiter to separate inline asm multiple alternative constraints for Clang side of support.
...
llvm-svn: 114253
2010-09-18 01:15:13 +00:00
John McCall
8ea46b6654
Fix a bug with binding l-values to elided temporaries, and leave a couple
...
helpful asserts behind.
llvm-svn: 114250
2010-09-18 00:58:34 +00:00
Bill Wendling
d632616f86
The MMX shift-with-immediate builtins require the equivalent
...
shift-with-immediate LLVM intrinsics.
llvm-svn: 114239
2010-09-17 23:46:16 +00:00
David Chisnall
dd84ef1e62
Add a -ftrapv-handler= option which allows a handler to invoke instead of simply aborting when a signed operation overflows. This mirrors the (GCC-incompatible) behaviour from clang 1.0 and 1.1 when -ftrapv was specified, but allows the handler to be defined for each compilation unit.
...
llvm-svn: 114192
2010-09-17 18:29:54 +00:00
Fariborz Jahanian
5bbd1b0051
Patch to add IRgen support for Gnu's conditional operator
...
extension when missing LHS. This patch covers scalar
conditionals only. Others are wip.
(pr7726, radar 8353567).
llvm-svn: 114182
2010-09-17 15:51:28 +00:00
Daniel Dunbar
195fa00399
IRgen: Change CodeGenPasses to be a PassManager, so it can have CallGraphSCC or
...
Module. Patch by Mike Gist!
llvm-svn: 114171
2010-09-17 07:35:16 +00:00
John McCall
769250ea70
Currently we're initializing the vtable pointers of a class only after
...
the bases are completely initialized. This won't work --- base
initializer expressions can rely on the vtables having been set up.
Check for uses of 'this' in the initializers and force a vtable
initialization if found.
This might not be good enough; we might need to extend this to handle
the possibility of arbitrary code finding an external reference to this
(not yet completely-constructed!) object and accessing through it,
in which case we'll probably find ourselves doing a lot more unnecessary
stores.
llvm-svn: 114153
2010-09-17 02:31:44 +00:00
John McCall
7f9c92a9a0
When emitting a new-expression inside a conditional expression,
...
the cleanup might not be dominated by the allocation code.
In this case, we have to store aside all the delete arguments
in case we need them later. There's room for optimization here
in cases where we end up not actually needing the cleanup in
different branches (or being able to pop it after the
initialization code).
Also make sure we only call this operator delete along the path
where we actually allocated something.
Fixes rdar://problem/8439196.
llvm-svn: 114145
2010-09-17 00:50:28 +00:00
Daniel Dunbar
dd38fbc7fb
IRgen/ABI/x86-32: Realign indirect arguments when the ABI requires us to pass
...
them with a smaller alignment than the rest of codegen expects.
llvm-svn: 114115
2010-09-16 20:42:06 +00:00
Daniel Dunbar
7b7c2937ef
IRgen/ABI: Add support for realigning structures which are passed by indirect
...
reference.
llvm-svn: 114114
2010-09-16 20:42:02 +00:00
Daniel Dunbar
ed23de3348
IRgen/ABI/x86_32/Darwin: On Darwin, only structures with SSE vector types get passed
...
with a non-default-stack-ABI-alignment (of 16).
- This fixes the ABI convenient, but breaks codegen since we now have
underaligned arguments. Marginal improvement overall though, and will be
fixed in next commit.
llvm-svn: 114113
2010-09-16 20:42:00 +00:00
Daniel Dunbar
8a6c91ff76
IRgen/x86_32/Linux: Linux seems to align all stack objects to 4 bytes, unlike
...
Darwin. Checked vs the handiest Linux llvm-gcc I had around, someone on Linux is
welcome to investigate more.
llvm-svn: 114112
2010-09-16 20:41:56 +00:00
Fariborz Jahanian
c58ec3a9e5
Removes unused setter.
...
llvm-svn: 114085
2010-09-16 16:14:34 +00:00
John McCall
0bdb1fd477
Opportunistically use the C++ personality function in ObjC++
...
translation units that don't catch ObjC types. rdar://problem/8434851
llvm-svn: 114070
2010-09-16 06:16:50 +00:00
John McCall
2a8b9a3caa
Further beautification: this pointer can now be typed.
...
llvm-svn: 114061
2010-09-16 03:16:41 +00:00
John McCall
58649dc609
Initialize AggValueSlot's flags along all paths, plus minor beautification.
...
Prospective fix for broken commit in r114045.
llvm-svn: 114060
2010-09-16 03:13:23 +00:00
Fariborz Jahanian
b60e70f963
Patch to move RequiresGCollection bit to
...
AggValueSlot slot.
llvm-svn: 114045
2010-09-16 00:20:07 +00:00
Devang Patel
28b5286bda
While handling change of file, check if _current_ file is already seen or not. If current file is seen then it indicates that end of previous file's lexical scope.
...
This fixes radar 8396182.
llvm-svn: 114018
2010-09-15 20:50:40 +00:00
John McCall
7a626f63f7
one piece of code is responsible for the lifetime of every aggregate
...
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.
I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly
llvm-svn: 113962
2010-09-15 10:14:12 +00:00
John McCall
d441b1e637
Tweak this assert.
...
llvm-svn: 113863
2010-09-14 21:45:42 +00:00
John McCall
824c2f537c
Implement the EH cleanup to call 'operator delete' if a new-expression throws
...
(but not if destructors associated with the full-expression throw).
llvm-svn: 113836
2010-09-14 07:57:04 +00:00
Argyrios Kyrtzidis
9efa1ce145
Fix VLA miscompilation.
...
llvm.stacksave/llvm.stackrestore wasn't emitted for VLAs in inner scopes.
Fixes r8403108.
llvm-svn: 113822
2010-09-14 00:42:34 +00:00
Michael J. Spencer
09476212de
Revert "CMake: Update to use standard CMake dependency tracking facilities instead"
...
This reverts commit r113631
Conflicts:
CMakeLists.txt
lib/CodeGen/CMakeLists.txt
llvm-svn: 113817
2010-09-13 23:54:41 +00:00
Sebastian Redl
8eb06f17c4
Eagerly evaluate type traits in Sema instead of lazily in AST. They actually need Sema access to be correct, fixes coming up.
...
llvm-svn: 113782
2010-09-13 20:56:31 +00:00
Fariborz Jahanian
0aa35b9cf5
Block description for trivial block literals have
...
their 'isa' field scanned regardless.
llvm-svn: 113749
2010-09-13 16:09:44 +00:00
Chris Lattner
8ee6a4142a
Augment -ftrapv to check for divide by zero, mod by zero, and INT_MIN % -1.
...
Patch by John Regehr!
llvm-svn: 113705
2010-09-11 21:47:09 +00:00
Michael J. Spencer
9efc54890d
CMake: Fix mingw32 build.
...
llvm-svn: 113677
2010-09-11 02:13:48 +00:00
Fariborz Jahanian
933c6723a4
Fixes an obscure bug in importd block variable layout
...
information when imported variable is used
more than once. Originally though to be a bug in importing
block varibles. Fixes radar 8417746.
llvm-svn: 113675
2010-09-11 01:27:29 +00:00
Michael J. Spencer
0881f4a367
CMake: Update to use standard CMake dependency tracking facilities instead
...
of whatever we were using before...
llvm-svn: 113631
2010-09-10 21:13:16 +00:00
Sebastian Redl
b67655fc6d
Implement CXXNoexceptExpr codegen.
...
llvm-svn: 113629
2010-09-10 21:04:00 +00:00
Sebastian Redl
4202c0f2a9
Define and implement CXXNoexceptExpr. Create it in Sema.
...
llvm-svn: 113623
2010-09-10 20:55:43 +00:00
Fariborz Jahanian
f93ac89414
IRGen fix for using property-dot syntax to pass
...
reference object to a c++ member function.
fixes radar 8409336.
llvm-svn: 113602
2010-09-10 18:56:35 +00:00
Douglas Gregor
c9199f522f
Clean up CMake dependencies
...
llvm-svn: 113489
2010-09-09 15:44:58 +00:00
Fariborz Jahanian
cfddabf5a3
Block ivar layout must assume that the 'isa'
...
field of the block descriptor is GC'able (scanned)
as this what the runtime expects (one can send it
messages). Radar 8394947.
llvm-svn: 113454
2010-09-09 00:21:45 +00:00
Francois Pichet
5cc0a67f08
Fix warnings caused by new CXXUuidofExprClass enumerator.
...
llvm-svn: 113444
2010-09-08 23:47:05 +00:00
John McCall
68ff03728a
Implement ARM static local initialization guards, which are more compact than
...
Itanium guards and use a slightly different compiled-in API.
llvm-svn: 113330
2010-09-08 01:44:27 +00:00