Dan Gohman
c44fd6486e
Use a different name for pointer types in tbaa, to be a little
...
more consistent with other names, and to look less like a magic name.
llvm-svn: 116616
2010-10-15 20:26:20 +00:00
Dan Gohman
2d0a3c7b8c
Add a comment.
...
llvm-svn: 116615
2010-10-15 20:24:53 +00:00
Dan Gohman
4a3b1b3ef4
Fix a typo in a comment Frits van Bommel spotted.
...
llvm-svn: 116614
2010-10-15 20:24:10 +00:00
Dan Gohman
2e29eb5a4b
Experimental TBAA support for enum types.
...
llvm-svn: 116613
2010-10-15 20:23:12 +00:00
Dan Gohman
d19ee8a07f
Don't leak the TBAA object.
...
llvm-svn: 116595
2010-10-15 18:04:46 +00:00
Dan Gohman
f5c5e0773e
Add a comment about odd "signed char" incompatibility between C++ and C.
...
llvm-svn: 116593
2010-10-15 17:52:03 +00:00
John McCall
1c9c3fd50a
Death to blocks, or at least the word "block" in one particular obnoxiously
...
ambiguous context.
llvm-svn: 116567
2010-10-15 04:57:14 +00:00
Daniel Dunbar
59ae137329
Update CMake.
...
llvm-svn: 116548
2010-10-15 00:39:31 +00:00
Dan Gohman
d65c196439
Add a TBAA type for pointer types.
...
llvm-svn: 116544
2010-10-15 00:01:39 +00:00
Dan Gohman
3f1cf0f373
Unsigned types are TBAA-compatible with their signed counterparts.
...
Also, handle unknown types conservatively.
llvm-svn: 116541
2010-10-14 23:39:00 +00:00
Dan Gohman
947c9af774
Experimental TBAA support.
...
This enables metadata generation by default, however the TBAA pass
in the optimizer is still disabled for now.
llvm-svn: 116536
2010-10-14 23:06:10 +00:00
Devang Patel
0f58561907
Use root non-virtual primary base class, not just immediate primary base class, for AT_containing_type.
...
This is tested by virtfunc.exp in gdb testsuite.
llvm-svn: 116535
2010-10-14 22:59:23 +00:00
Fariborz Jahanian
681c0754d9
Eliminate usage of ObjCSuperExpr used for
...
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788
llvm-svn: 116483
2010-10-14 16:04:05 +00:00
Devang Patel
67f70aaf5a
Fix debug info for anon union.
...
This is tested by anon-union.exp.
llvm-svn: 116372
2010-10-12 23:24:54 +00:00
Fariborz Jahanian
77890879dd
Fixes a typo which caused byte offset in debug info
...
for ivars to be 0. Fixes pr8353.
llvm-svn: 116273
2010-10-11 23:55:47 +00:00
Devang Patel
33ddf69fb3
Fix debug info for functions whose context is a namespace.
...
This is tested by namespace.exp in gdb testsuite.
llvm-svn: 116248
2010-10-11 21:58:41 +00:00
Chris Lattner
a09e8efd1f
Per discussion with Sanjiv, remove the PIC16 target from mainline. When/if
...
it comes back, it will be largely a rewrite, so keeping the old codebase
in tree isn't helping anyone.
llvm-svn: 116191
2010-10-11 05:44:49 +00:00
Argyrios Kyrtzidis
0c34b138df
Make sure the VTables for template instantiations are emitted even if the key function doesn't have a body.
...
llvm-svn: 116186
2010-10-11 03:25:57 +00:00
Argyrios Kyrtzidis
f0e31c8b9c
Don't let typeinfo name symbols be 'internal hidden', it can lead to linker conflicts
...
with similarly named classes in anonymous namespaces.
llvm-svn: 116185
2010-10-11 03:25:53 +00:00
NAKAMURA Takumi
11f6be1ce8
lib/CodeGen/CodeGenModule.cpp: DLLImportLinkage should be processed also on declaration.
...
It enables clang to compile Mingw's headers.
llvm-svn: 116184
2010-10-11 02:30:56 +00:00
Argyrios Kyrtzidis
073c9cb592
Implement __builtin_ia32_vec_ext_v2si function (required by Qt).
...
llvm-svn: 116162
2010-10-10 03:19:11 +00:00
Bill Wendling
65b2a965fb
Add target implementations for the X86 builtins:
...
__builtin_ia32_vec_init_v8qi
__builtin_ia32_vec_init_v4hi
__builtin_ia32_vec_init_v2si
They are lowered to bitcasts. (These are all ready tested by the gcc testsuite.)
<rdar://problem/8529957>
llvm-svn: 116147
2010-10-09 08:47:25 +00:00
John McCall
a2fabff4f6
Permit constant evaluation of const floating-point variables with
...
constant initializers.
llvm-svn: 116138
2010-10-09 01:34:31 +00:00
Douglas Gregor
0bf3140424
Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
...
bit by me).
llvm-svn: 116122
2010-10-08 23:50:27 +00:00
Douglas Gregor
7a2b425ee1
Revert the hack Chris Lattner added in r97981 to work around
...
brokenness in the designated-initializer ASTs. The ASTs were fixed by
Alp Toker's patch (r116098) for PR6955. Fixes PR6537.
llvm-svn: 116101
2010-10-08 20:56:19 +00:00
Devang Patel
3db5480b27
Tighter check in r116060 blcoked enums also. Emit enum const's debug info.
...
llvm-svn: 116071
2010-10-08 18:24:19 +00:00
Devang Patel
5e8ee2bb89
Do not repeat debug info for file variable constants.
...
This is tested by file-statics.exp in gdb testsuite.
llvm-svn: 116060
2010-10-08 17:02:40 +00:00
Devang Patel
251f859b23
Identify functions with prototype appropriately in debug info.
...
This is tested by callfuncs.exp in gdb testsuite.
llvm-svn: 115989
2010-10-07 22:03:49 +00:00
Devang Patel
284fa417ec
Mark FunctionNoProtoType's argument as unspecified parameters.
...
llvm-svn: 115834
2010-10-06 20:51:45 +00:00
John McCall
569eafce63
Re-enable EH cleanups to destroy __block variables, now that we have a moment to
...
deal with the consequences. Fixes rdar://problem/8224178.
llvm-svn: 115816
2010-10-06 18:56:43 +00:00
Devang Patel
c0601d1e99
Do not emit subrange for incomplete array type.
...
This is tested by ptype.exp in gdb testsuite.
llvm-svn: 115805
2010-10-06 18:30:00 +00:00
Devang Patel
5b389f495b
Remove unused argument.
...
llvm-svn: 115789
2010-10-06 15:58:57 +00:00
John McCall
e5dd32da11
Teach PopCleanupBlock to correctly handle the possibility of branching through
...
a EH-only cleanup as part of a fallthrough branch-through. That this happens
for this test case is actually a separate bug.
llvm-svn: 115668
2010-10-05 20:48:15 +00:00
John McCall
0077b22aa4
If we're resolving all outstanding fixups, and there are multiple fixups
...
for the same destination, then we must potentially rewrite the initial branch
of every fixup. Without this patch, a short-circuit check meant to prevent
a switch case from being redundantly added was preventing later fixups from
being processed. Fixes PR8175 (again).
llvm-svn: 115586
2010-10-05 02:33:56 +00:00
John McCall
9916e3fa93
In the fragile ObjC ABI, save the caught exception to the side if there are
...
both @catches and a @finally, because the second call to @objc_exception_try_enter
will clobber the exception slot. Fixes rdar://problem/8440970.
llvm-svn: 115575
2010-10-04 23:42:51 +00:00
Devang Patel
3703ff4163
dyn_cast is more appropriate here.
...
llvm-svn: 115569
2010-10-04 22:28:23 +00:00
Devang Patel
95eea45aa5
Add missing '}' :)
...
llvm-svn: 115568
2010-10-04 22:13:18 +00:00
Devang Patel
44b8bf0f5b
Emit debug info for an aggregate while processing MemberExpr if the aggregate's debug info was delayed untill now.
...
llvm-svn: 115564
2010-10-04 21:46:04 +00:00
Devang Patel
cbc7bc94c9
Fix filename in header comment.
...
llvm-svn: 115561
2010-10-04 21:15:33 +00:00
Chris Lattner
64d7f2a014
when expanding a builtin, if the argument is required to be a constant,
...
force it to be a constant instead of emitting with EmitScalarExpr. In
-ftrapv mode, they are not the same.
This fixes rdar://8478728 + PR8221
llvm-svn: 115388
2010-10-02 00:09:12 +00:00
Chris Lattner
07e96866a2
tidy
...
llvm-svn: 115383
2010-10-01 23:43:16 +00:00
Devang Patel
d18c5aa20a
Mark explict methods as explict in debug info.
...
llvm-svn: 115379
2010-10-01 23:32:17 +00:00
Fariborz Jahanian
885e9dff93
Output debug info. for ivars declared in class
...
extension and implementation.
Fixes rdar://8493239.
llvm-svn: 115248
2010-10-01 00:01:53 +00:00
Devang Patel
91bbb5547d
Introduce -flimit-debug-info.
...
In this experimental mode try avoiding debug info emission for classes as much as possible. The goal is to reduce size of produced debuginfo without reducing quality of debug info in general. This is a work in progress.
llvm-svn: 115188
2010-09-30 19:05:55 +00:00
Devang Patel
7c086227e6
Attach aritifical attribute with implicit parameters.
...
Radar 8493141.
llvm-svn: 115104
2010-09-29 23:09:21 +00:00
Devang Patel
330b65e350
Emit method access specifier.
...
Radar 8490416.
llvm-svn: 115090
2010-09-29 21:46:16 +00:00
Devang Patel
db2732ac42
Update to reflect DIFactory::CreateSubprogram() interface change from r115084.
...
llvm-svn: 115085
2010-09-29 21:05:52 +00:00
Devang Patel
984cdeef37
Remove dead code.
...
llvm-svn: 115079
2010-09-29 20:05:01 +00:00
Daniel Dunbar
8caf6415a8
Add support for attribute((naked)), patch by Zoxc on cfe-commits!
...
- Minor style tweaks by me.
llvm-svn: 115056
2010-09-29 18:20:25 +00:00
Bill Wendling
11191f11b8
Accidentally committed some temporary changes on my branch when reverting patches.
...
llvm-svn: 114936
2010-09-28 01:28:56 +00:00
Bill Wendling
6d8c442e08
Temporarily revert 114929 114925 114924 114921. It looked like they (or at least
...
one of them) was causing a series of failures:
http://google1.osuosl.org:8011/builders/clang-x86_64-darwin10-selfhost/builds/4518
svn merge -c -114929 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114929 into '.':
U include/clang/Sema/Sema.h
U include/clang/AST/DeclCXX.h
U lib/Sema/SemaDeclCXX.cpp
U lib/Sema/SemaTemplateInstantiateDecl.cpp
U lib/Sema/SemaDecl.cpp
U lib/Sema/SemaTemplateInstantiate.cpp
U lib/AST/DeclCXX.cpp
svn merge -c -114925 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114925 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/AST/DeclCXX.cpp
svn merge -c -114924 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114924 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/Sema/SemaDecl.cpp
G lib/AST/DeclCXX.cpp
U lib/AST/ASTContext.cpp
svn merge -c -114921 https://llvm.org/svn/llvm-project/cfe/trunk
--- Reverse-merging r114921 into '.':
G include/clang/AST/DeclCXX.h
G lib/Sema/SemaDeclCXX.cpp
G lib/Sema/SemaDecl.cpp
G lib/AST/DeclCXX.cpp
llvm-svn: 114933
2010-09-28 01:09:49 +00:00
Douglas Gregor
ec3bec0c7a
Kill FunctionDecl's IsCopyAssignment bit; it duplicated what could
...
already be determined by isCopyAssignmentOperator(), and was set too
late in the process for all clients to see the appropriate
value. Cleanup only; no functionality change.
llvm-svn: 114916
2010-09-27 22:37:28 +00:00
Bill Wendling
1308667f18
Revert my patch changing the MMX "shift" intrinsics that take immediates into
...
"shift with non-immediate" intrinsics. It gets here because we they aren't
immediates anymore.
llvm-svn: 114890
2010-09-27 21:22:25 +00:00
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
Fariborz Jahanian
366a94822b
Local static block variable referecned in its
...
block-literal initializer expression causes IRgen to crash.
This patch fixes by saving it in StaticLocalDecl map
already used for such purposes. (radar 8390455).
llvm-svn: 113307
2010-09-07 23:26:17 +00:00
Fariborz Jahanian
535618b927
get rid of a warning.
...
llvm-svn: 113256
2010-09-07 19:57:04 +00:00
Fariborz Jahanian
56603ef7b2
Have Sema check for validity of CGString literal
...
instead of asserting in IRGen. Fixes radar 8390459.
llvm-svn: 113253
2010-09-07 19:38:13 +00:00
Argyrios Kyrtzidis
2fdb5b5955
LastFieldBitfield in CGObjCCommonMac::BuildAggrIvarLayout keeps bitfields or unnamed fields but later the code
...
assumes that it's always a bitfield. This can lead to a crash (reported at rdar://8368320).
llvm-svn: 113154
2010-09-06 12:00:10 +00:00
Chris Lattner
52bcf96384
move the hackaround for PR6537 to catch unions as well,
...
fixing the ICE in PR7151
llvm-svn: 113130
2010-09-06 00:13:11 +00:00
Chris Lattner
f53c096813
clean up some formatting.
...
llvm-svn: 113129
2010-09-06 00:11:41 +00:00
Nick Lewycky
1b36b55f89
No functional change. Replace Out << 'a' << 'b' with Out << "ab" and spell
...
David Vandevoorde's name correctly.
llvm-svn: 113103
2010-09-05 03:40:33 +00:00
Fariborz Jahanian
60babfb8a1
Casting of a property reference to 'void' did not
...
generate the necessary code. This patch fixes it.
// rdar://8389655
llvm-svn: 113079
2010-09-04 19:49:18 +00:00
John McCall
2917bd0fb4
Petty optimization.
...
llvm-svn: 113049
2010-09-04 01:26:37 +00:00
Fariborz Jahanian
087206dbcd
Truncate block variable of bool type to i1 when its
...
value is used. This matches with non-block variable
use of bool type. (Fixes radar 8390062).
llvm-svn: 113027
2010-09-03 23:07:53 +00:00
Fariborz Jahanian
9d798d13f3
Cope with llvm's reference to bool type of 'i1' vs. clang's
...
type of 'i8' for the same for __block variables of
type bool. refixes radar 8382559.
llvm-svn: 113015
2010-09-03 21:36:02 +00:00
John McCall
56f57589af
A constant initializer never matches the type of the variable it's
...
initializing; it at best matches the element type of the variable
it's initializing. Fixes PR8073.
llvm-svn: 112992
2010-09-03 18:58:50 +00:00
Daniel Dunbar
2f8df98c92
IRgen: Fix silly thinko in r112021, which was generating code for the same expr
...
twice. This showed up as an assert on the odd test case because we generated the
decl map entry twice.
llvm-svn: 112943
2010-09-03 02:07:00 +00:00
Dawn Perchik
335e16bad4
Add symantic support for the Pascal calling convention via
...
"__attribute((pascal))" or "__pascal" (and "_pascal" under
-fborland-extensions). Support still needs to be added to llvm.
llvm-svn: 112939
2010-09-03 01:29:35 +00:00
Bob Wilson
6061b05d51
Translate NEON vabdl, vaba, and vabal builtins to be implemented using the
...
vabd intrinsic combined with zext and add operations.
llvm-svn: 112937
2010-09-03 01:27:09 +00:00
John McCall
0d635f53a8
Re-commit r112916 with an additional fix for the self-host failures.
...
I've audited the remaining getFunctionInfo call sites.
llvm-svn: 112936
2010-09-03 01:26:39 +00:00
John McCall
c32f94b4ce
Revert r112916, it's breaking selfhost pretty badly.
...
llvm-svn: 112925
2010-09-03 00:40:45 +00:00
Daniel Dunbar
be13194655
Revert "Another i1 vs. i8 type mismatch issue. This time", it breaks some projects.
...
llvm-svn: 112922
2010-09-03 00:35:23 +00:00
John McCall
12d3891a27
It's not safe to use the generic CXXMethodDecl overload of CGT::getFunctionInfo
...
to set up a destructor call, because ABIs can tweak these conventions.
Fixes rdar://problem/8386802.
llvm-svn: 112916
2010-09-03 00:01:57 +00:00
Daniel Dunbar
a70fab8dd7
IRgen/Obj-C: Rewrite Objective-C bit-field access to compute the access strategy
...
using the same methods as used for normal structures.
- This fixes problems with reading past the end of the structure and with
handling straddled bit-field access.
llvm-svn: 112914
2010-09-02 23:53:31 +00:00
Daniel Dunbar
c7f9bbafe4
IRgen: Move CGBitFieldInfo strategy computation helpers to static member
...
functions.
llvm-svn: 112913
2010-09-02 23:53:28 +00:00
Douglas Gregor
040ad500c4
Fix a few more ConvertTypes that should be ConvertTypeForMems, fixing
...
two regressions in Boost.Config.
llvm-svn: 112908
2010-09-02 23:24:14 +00:00
Bob Wilson
5b4904f7a3
Add a bunch of missing bitcasts for clang NEON builtin expansions.
...
Radar 8388233
llvm-svn: 112890
2010-09-02 22:37:30 +00:00
Douglas Gregor
6429f5cf29
Eliminate CXXBindReferenceExpr, which was used in a ton of
...
well-intentioned but completely unused code.
llvm-svn: 112868
2010-09-02 21:50:02 +00:00
David Chisnall
cf60744cd7
Tidy up last commit, as per Devang's comments.
...
llvm-svn: 112840
2010-09-02 18:01:51 +00:00
Douglas Gregor
04f3621860
Revert my two IRgen fixes for "bool", then use a far simpler approach
...
based on ConvertTypeForMem. Thanks to John for pointing out the right
solution.
llvm-svn: 112838
2010-09-02 17:38:50 +00:00
Fariborz Jahanian
05bbef63b6
Another i1 vs. i8 type mismatch issue. This time
...
a 'bool' byref variable in memory. Fixes radar 8382559.
llvm-svn: 112835
2010-09-02 17:28:31 +00:00
David Chisnall
6bf98ff491
Use the unmangled name for the display name in Objective-C debug info. This should have no effect with the Mac runtime where clang (unlike GCC) uses the display name symbol name.
...
llvm-svn: 112833
2010-09-02 17:16:32 +00:00
Douglas Gregor
262e4e2ab5
Fix more i1/i8 pointer madness. Here, an overactive assertion
...
complains when the element type of a C++ "delete" expression is
different from what we would expect from the pointer type. When
deleting a bool*, we end up with an i1 on one side (where we compute
the LLVM type from the Clang bool type) and i8 on the other (where we
grab the LLVM type from the LLVM pointer type). I've weakened the
assertion appropriately, and the Boost Parallel Graph Library now
passes its regression tests.
llvm-svn: 112821
2010-09-02 15:34:35 +00:00
Douglas Gregor
e791a0546c
Fix a crash involving pointer-to-data-members of boolean type. We were
...
constructing an LLVM PointerType directly from the "bool"'s LLVM type
(i1), which resulted in unfortunate pointer type i1*. The fix is to
build the LLVM PointerType from the corresponding Clang PointerType,
so that we get i8* in the case of a bool.
John, please review. I also left a FIXME there because we seem to be
dropping "volatile", which would be rather unfortunate.
llvm-svn: 112819
2010-09-02 15:00:29 +00:00
John McCall
9bca923c10
Simplify some random accesses to the ASTContext from the ABI classes.
...
llvm-svn: 112816
2010-09-02 10:25:57 +00:00
John McCall
8ed55a54fd
Abstract IR generation of array cookies into the C++ ABI class and
...
implement ARM array cookies. Also fix a few unfortunate bugs:
- throwing dtors in deletes prevented the allocation from being deleted
- adding the cookie to the new[] size was not being considered for
overflow (and, more seriously, was screwing up the earlier checks)
- deleting an array via a pointer to array of class type was not
causing any destructors to be run and was passing the unadjusted
pointer to the deallocator
- lots of address-space problems, in case anyone wants to support
free store in a variant address space :)
llvm-svn: 112814
2010-09-02 09:58:18 +00:00
Bob Wilson
1b87c9a646
Translate NEON vmull, vmlal, and vmlsl builtins to llvm multiply-add/sub
...
with zext/sext operations, instead of to llvm intrinsics. I have a plan to
avoid the clang builtins for these, but it is going to take a little longer
and I want to get the NEON intrinsics updated before the 2.8 release.
llvm-svn: 112764
2010-09-01 23:20:27 +00:00
Fariborz Jahanian
61a312413c
Fix IRGen when property-dot syntax used to access
...
a c++ class object 'ivar'. Fixes radar 8366604.
llvm-svn: 112729
2010-09-01 19:36:41 +00:00
Ted Kremenek
0ef508d301
Split ObjCInterfaceDecl::ReferencedProtocols into two lists: ReferencedProtocols and AllReferencedProtocols. ReferencedProtocols
...
(and thus protocol_begin(), protocol_end()) now only contains the list of protocols that were directly referenced in
an @interface declaration. 'all_referenced_protocol_[begin,end]()' now returns the set of protocols that were referenced
in both the @interface and class extensions. The latter is needed for semantic analysis/codegen, while the former is
needed to maintain the lexical information of the original source.
Fixes <rdar://problem/8380046>.
llvm-svn: 112691
2010-09-01 01:21:15 +00:00
Chris Lattner
d426c8eae3
fix rdar://8360877 a really nasty miscompilation in Boost.Xpressive
...
caused by my ABI work. Passing:
struct outer {
int x;
struct epsilon_matcher {} e;
int f;
};
as {i32,i32} isn't safe, because the offset of the second element
needs to be at 8 when it is interpreted as a memory value.
llvm-svn: 112686
2010-09-01 00:50:20 +00:00
Chris Lattner
be5eb17536
same refactoring as before, this time on the argument side.
...
llvm-svn: 112684
2010-09-01 00:24:35 +00:00
Chris Lattner
52b3c13149
refactor some code to cut down on redundancy, no functionality change.
...
llvm-svn: 112683
2010-09-01 00:20:33 +00:00
John McCall
c134eb5ada
Amusingly, I missed this point of abstraction in all my earlier
...
member-pointer refactoring: dereferencing a member data pointer.
llvm-svn: 112640
2010-08-31 21:07:20 +00:00
Chris Lattner
04dc957260
Add support for windows x86-64 varargs, patch by Cameron Esfahani!
...
llvm-svn: 112603
2010-08-31 16:44:54 +00:00
John McCall
5d865c3292
Teach IR generation to return 'this' from constructors and destructors
...
under the ARM ABI.
llvm-svn: 112588
2010-08-31 07:33:07 +00:00
Sebastian Redl
50c682585f
Rename DeclContext::getLookupContext to getRedeclContext and change its semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them.
...
llvm-svn: 112563
2010-08-31 00:36:30 +00:00
Chris Lattner
a48fbe8c53
Fix PR8029, a x86-32 ABI regression in introduced in r112211
...
llvm-svn: 112537
2010-08-30 22:03:23 +00:00
Bob Wilson
b9225f7f85
Translate NEON vmovn builtin to a vector truncation instead of using an llvm
...
intrinsic.
llvm-svn: 112504
2010-08-30 19:57:13 +00:00
Alexis Hunt
3b7918625c
Revert my user-defined literal commits - r1124{58,60,67} pending
...
some issues being sorted out.
llvm-svn: 112493
2010-08-30 17:47:05 +00:00
Alexis Hunt
e3675ef0f3
Two minor fixes to user-defined literals:
...
- Zero-initialize UDLData so that crashes stop
- Stop complaining that we can't emit them (we most certainly can)
llvm-svn: 112467
2010-08-30 09:27:16 +00:00
Alexis Hunt
79eb5469e0
Implement C++0x user-defined string literals.
...
The extra data stored on user-defined literal Tokens is stored in extra
allocated memory, which is managed by the PreprocessorLexer because there isn't
a better place to put it that makes sure it gets deallocated, but only after
it's used up. My testing has shown no significant slowdown as a result, but
independent testing would be appreciated.
llvm-svn: 112458
2010-08-29 21:26:48 +00:00
Bob Wilson
0e7a398936
Translate NEON vaddl, vaddw, vsubl, and vsubw builtins to llvm add/sub
...
with zext/sext operations, instead of to llvm intrinsics. (We can also
get rid of the clang builtins and handle these entirely in the arm_neon.h
header if there is a way to express vector sext/zext in C.)
llvm-svn: 112413
2010-08-29 05:14:28 +00:00
Devang Patel
96b7f55a03
Debug info for friends!
...
Patch originally by Alexander Herz.
llvm-svn: 112275
2010-08-27 17:47:47 +00:00
Bob Wilson
7b0d032d0c
Add the new alignment arguments for NEON load/store intrinsics, based on the
...
types of the pointer address expressions used with those intrinsics.
llvm-svn: 112272
2010-08-27 17:14:29 +00:00
Chris Lattner
d7e54804ee
improve comments.
...
llvm-svn: 112214
2010-08-26 20:08:43 +00:00
Chris Lattner
d774ae9ed1
fix 2xi16 to pass as i32 instead of <2 x i16>. The former passes in
...
memory (as required) the later now passes in an xmm register. This
fixes gcc.dg/compat/vector_1 on x86-32.
llvm-svn: 112211
2010-08-26 20:05:13 +00:00
Chris Lattner
69e683fb35
vector of long and ulong are also classified as INTEGER in x86-64 abi,
...
this fixes rdar://8358475 a failure of the gcc.dg/compat/vector_1 abi
test.
llvm-svn: 112205
2010-08-26 18:13:50 +00:00
Chris Lattner
46830f2fd6
1 x ulonglong needs to be classified as INTEGER, just like 1 x longlong,
...
this fixes a miscompilation on the included testcase, rdar://8359248
llvm-svn: 112201
2010-08-26 18:03:20 +00:00
Argyrios Kyrtzidis
7648fb464b
Fix miscompilation. The cookie was not used when new'ing arrays with multiple dimensions.
...
llvm-svn: 112188
2010-08-26 15:23:38 +00:00
Chris Lattner
51e1cc2fe2
tame an assertion, fixing rdar://8357396
...
llvm-svn: 112174
2010-08-26 06:28:35 +00:00
Daniel Dunbar
d2bc53e925
CGValue: Increase width of allowed alignment. We could switch to log2, but we
...
don't currently need the bits anyway.
llvm-svn: 112173
2010-08-26 06:02:12 +00:00
John McCall
8e7d656a4a
De-memberify the VarDecl and FunctionDecl StorageClass enums.
...
This lets us remove Sema.h's dependency on Expr.h and Decl.h.
llvm-svn: 112156
2010-08-26 03:08:43 +00:00
Daniel Dunbar
e3d87d21f3
IRgen/NEON: Fix codegen of vzip and vzipq.
...
- Will be adding an executable test case to test-suite repo.
llvm-svn: 112126
2010-08-26 00:55:57 +00:00
Chris Lattner
9f8b451876
Finally pass "two floats in a 64-bit unit" as a <2 x float> instead of
...
as a double in the x86-64 ABI. This allows us to generate much better
code for certain things, e.g.:
_Complex float f32(_Complex float A, _Complex float B) {
return A+B;
}
Used to compile into (look at the integer silliness!):
_f32: ## @f32
## BB#0: ## %entry
movd %xmm1, %rax
movd %eax, %xmm1
movd %xmm0, %rcx
movd %ecx, %xmm0
addss %xmm1, %xmm0
movd %xmm0, %edx
shrq $32, %rax
movd %eax, %xmm0
shrq $32, %rcx
movd %ecx, %xmm1
addss %xmm0, %xmm1
movd %xmm1, %eax
shlq $32, %rax
addq %rdx, %rax
movd %rax, %xmm0
ret
Now we get:
_f32: ## @f32
movdqa %xmm0, %xmm2
addss %xmm1, %xmm2
pshufd $16, %xmm2, %xmm2
pshufd $1, %xmm1, %xmm1
pshufd $1, %xmm0, %xmm0
addss %xmm1, %xmm0
pshufd $16, %xmm0, %xmm1
movdqa %xmm2, %xmm0
unpcklps %xmm1, %xmm0
ret
and compile stuff like:
extern float _Complex ccoshf( float _Complex ) ;
float _Complex ccosf ( float _Complex z ) {
float _Complex iz;
(__real__ iz) = -(__imag__ z);
(__imag__ iz) = (__real__ z);
return ccoshf(iz);
}
into:
_ccosf: ## @ccosf
## BB#0: ## %entry
pshufd $1, %xmm0, %xmm1
xorps LCPI4_0(%rip), %xmm1
unpcklps %xmm0, %xmm1
movaps %xmm1, %xmm0
jmp _ccoshf ## TAILCALL
instead of:
_ccosf: ## @ccosf
## BB#0: ## %entry
movd %xmm0, %rax
movq %rax, %rcx
shlq $32, %rcx
shrq $32, %rax
xorl $-2147483648, %eax ## imm = 0xFFFFFFFF80000000
addq %rcx, %rax
movd %rax, %xmm0
jmp _ccoshf ## TAILCALL
There is still "stuff to be done" here for the struct case,
but this resolves rdar://6379669 - [x86-64 ABI] Pass and return
_Complex float / double efficiently
llvm-svn: 112111
2010-08-25 23:39:14 +00:00
Michael J. Spencer
b2f376bdd0
Fix horrible white space errors.
...
llvm-svn: 112067
2010-08-25 18:17:27 +00:00
John McCall
e302792b61
GCC didn't care for my attempt at API compatibility, so brute-force everything
...
to the new constants.
llvm-svn: 112047
2010-08-25 11:45:40 +00:00
John McCall
2536c6da0e
More incremental progress towards not including Expr.h in Sema.h.
...
llvm-svn: 112044
2010-08-25 10:28:54 +00:00
Daniel Dunbar
ead6824c3c
IRgen: Fix a horrible bug in pointer to bool conversion, which we were treating
...
as a truncation not a comparison to null.
llvm-svn: 112021
2010-08-25 03:32:38 +00:00
John McCall
8d75243029
Expression statements undergo lvalue-to-rvalue conversion in C,
...
but not in C++, so don't emit aggregate loads of volatile references
in null context in C++. Happens to have been caught by an assertion.
We do not get the scalar case right. Volatiles are really broken.
llvm-svn: 112019
2010-08-25 02:50:31 +00:00
Devang Patel
356e3e0c6a
Fix 'for' loop variables' scope.
...
llvm-svn: 112002
2010-08-25 00:28:56 +00:00
Devang Patel
22e99c2bad
Fix enum size and align. Tested by setvar.exp in gdb testsuite.
...
llvm-svn: 111936
2010-08-24 18:14:06 +00:00
Daniel Dunbar
64c222a6bc
Debug Info: Put full Clang version into the debug info, to make it easier to
...
identify what version of the compiler was used to build something.
llvm-svn: 111927
2010-08-24 17:41:09 +00:00
Devang Patel
41c2097058
Emit debug info for enum constants.
...
llvm-svn: 111852
2010-08-23 22:07:25 +00:00
Dan Gohman
66427b1fcf
Reinstate the code for emitting an initial debug type for a struct,
...
to handle the case where the struct is only forward-declared. In
this case, a temporary MDNode is not needed and not desired.
llvm-svn: 111842
2010-08-23 21:15:56 +00:00
Fariborz Jahanian
bf9294fb65
Support for IRGen of synthesize bitfield ivars in
...
objc-nonfragile-abi2 (radar 7824380).
llvm-svn: 111823
2010-08-23 18:51:39 +00:00
Douglas Gregor
f63e4c3334
Emit an error noting that Clang does not support code generation for
...
the ternary operator without a left-hand side in C++ (PR7726), from
Jean-Daniel Dupas!
llvm-svn: 111809
2010-08-23 14:50:27 +00:00
John McCall
61a148881f
chandlerc pointed out that ending a line with /\ is not very friendly. :)
...
llvm-svn: 111797
2010-08-23 06:56:36 +00:00
Chris Lattner
65526f0190
fix rdar://8340348, a miscompile of boost that was exposed by r109848.
...
That revision started classifying truly empty structs like "Y" and "X"
as being NoClass/NoClass and turning them into 'ignore'. The call code
turns around and allocates space for the ignored argument with
GetUndefRValue. The bug is that GetUndefRValue would return the address
as undef, instead of returning an object with a defined address but
undefined contents.
llvm-svn: 111794
2010-08-23 05:26:13 +00:00
John McCall
7a9aac2d9f
Abstract out everything having to do with member pointers into the ABI
...
class; they should just be completely opaque throughout IR gen now,
although I haven't really audited that.
Fix a bug apparently inherited from gcc-4.2 where we failed to null-check
member data pointers when performing derived-to-base or base-to-derived
conversions on them.
llvm-svn: 111789
2010-08-23 01:21:21 +00:00
John McCall
aa4149a2aa
Extract a method to check whether a function is the global placement
...
operator new[].
llvm-svn: 111788
2010-08-23 01:17:59 +00:00
John McCall
614dbdcd55
Go back to asking CodeGenTypes whether a type is zero-initializable.
...
Make CGT defer to the ABI on all member pointer types.
This requires giving CGT a handle to the ABI.
It's way easier to make that work if we avoid lazily creating the ABI.
Make it so.
llvm-svn: 111786
2010-08-22 21:01:12 +00:00
Douglas Gregor
932c19dc9f
Eliminate a stale assertion. Fixes Clang self-host.
...
llvm-svn: 111782
2010-08-22 18:26:35 +00:00
Douglas Gregor
630c76efb0
When performing value-initialization for a class with a non-trivial,
...
implicitly-defined default constructor, zero-initialize the memory
before calling the default constructor. Previously, we would only
zero-initialize in the case of a trivial default constructor.
Also, simplify the hideous logic that determines when we have a
trivial default constructor and, therefore, don't need to emit any
call at all.
llvm-svn: 111779
2010-08-22 16:15:35 +00:00
John McCall
c29eb8a9d1
Clean up a very silly use of first-class aggregates.
...
llvm-svn: 111777
2010-08-22 11:04:31 +00:00
John McCall
a1dee5300b
Experiment with using first-class aggregates to represent member function
...
pointers. I find the resulting code to be substantially cleaner, and it
makes it very easy to use the same APIs for data member pointers (which I have
conscientiously avoided here), and it avoids a plethora of potential
inefficiencies due to excessive memory copying, but we'll have to see if it
actually works.
llvm-svn: 111776
2010-08-22 10:59:02 +00:00
John McCall
131d97d809
Extract member function pointer comparison and null comparison into
...
the ABI code. Implement correct semantics for these on ARM.
I believe this completes the implementation of member function pointers
on ARM.
I think I'm going to switch member function pointers over to be
non-aggregates while I have all this in mind.
llvm-svn: 111774
2010-08-22 08:30:07 +00:00
John McCall
1c456c89dc
Abstract out member-pointer creation. I'm really unhappy about the current
...
duplication between the constant and non-constant paths in all of this.
Implement ARM ABI semantics for member pointer constants and conversion.
llvm-svn: 111772
2010-08-22 06:43:33 +00:00
John McCall
84fa510aa9
Abstract more member-pointerness out.
...
llvm-svn: 111771
2010-08-22 04:16:24 +00:00
John McCall
a8bbb82c55
Abstract out member-pointer conversions.
...
Pretty much everything having to do with member pointers is ABI-specific.
llvm-svn: 111770
2010-08-22 03:04:22 +00:00
Eli Friedman
04831926ec
Detabify.
...
llvm-svn: 111768
2010-08-22 01:00:03 +00:00
John McCall
d9c6c0b583
Implement the call parts of the member-function-pointer ARM C++ ABI.
...
llvm-svn: 111766
2010-08-22 00:59:17 +00:00
John McCall
475999dcf9
Extract calls to method pointers out as an ABI routine.
...
No functionality change.
llvm-svn: 111752
2010-08-22 00:05:51 +00:00
John McCall
86353416a7
The ARM C++ ABI is sufficiently different from the Itanium C++ ABI that
...
it deserves its own enumerator. Obviously the implementations should
closely follow the Itanium ABI except in cases of divergence.
llvm-svn: 111749
2010-08-21 22:46:04 +00:00
Daniel Dunbar
5c816378f8
IRgen: Set the alignment correctly when creating LValue for a decls.
...
- Fixes PR5598.
- Review appreciated.
llvm-svn: 111726
2010-08-21 04:20:22 +00:00
Daniel Dunbar
49e5d12e59
CodeGenFunction: Eliminate unused MakeQualifiers() function.
...
llvm-svn: 111725
2010-08-21 04:13:07 +00:00
Daniel Dunbar
26d2c39b95
Simplify.
...
llvm-svn: 111724
2010-08-21 04:05:54 +00:00
Daniel Dunbar
226bddaff1
IRgen/CGValue: Give MakeAddrLValue() an alignment argument, and eliminate old form of MakeAddr().
...
llvm-svn: 111723
2010-08-21 03:58:45 +00:00
Daniel Dunbar
4bb04cee6a
IRgen: Move remaining LValue::Set... methods to LValue::set... (non-static) methods.
...
llvm-svn: 111722
2010-08-21 03:51:29 +00:00
Daniel Dunbar
f166a523f1
IRgen: Move remaining MakeAddr() calls to MakeAddrLValue().
...
llvm-svn: 111721
2010-08-21 03:44:13 +00:00
Daniel Dunbar
e8b6cda15a
IRgen: The CVR qualifiers in a subobject adjustment should just come from the
...
field (I think).
- Doug, please check.
llvm-svn: 111720
2010-08-21 03:37:02 +00:00
Daniel Dunbar
b657ac51cf
IRgen/CGValue: Add getQuals(), so qualifiers can be modified on an LValue.
...
llvm-svn: 111719
2010-08-21 03:29:54 +00:00
Daniel Dunbar
e50dda95ee
IRgen/LValue: Add LValue::setNonGC instead of SetObjCNonGC, for consistency with isNonGC().
...
llvm-svn: 111718
2010-08-21 03:22:38 +00:00
Daniel Dunbar
2e442a00b3
IRgen: Switch more MakeAddr() users to MakeAddrLValue; this time for calls which were previously not computing the qualifier list. In most cases, I don't think it matters, but I believe this is conservatively more correct / consistent.
...
llvm-svn: 111717
2010-08-21 03:15:20 +00:00
Daniel Dunbar
f6fb7e2b53
IRgen: Switch a bunch of trivial MakeAddr calls to use MakeAddrLValue.
...
llvm-svn: 111716
2010-08-21 03:08:16 +00:00
Daniel Dunbar
b1d94a98dd
IRgen: Eliminate EmitPredefinedFunctionName(), it doesn't need to be factored out.
...
llvm-svn: 111715
2010-08-21 03:01:12 +00:00
Daniel Dunbar
93b00a98a3
IRgen: Add an LValue::MakeAddr variant which takes a type and uses that to build
...
the qualifiers.
Also, add CodeGenFunction::MakeAddrLValue() helper function which passes in the
ASTContext.
llvm-svn: 111714
2010-08-21 02:53:44 +00:00
Dan Gohman
25f9aaedc6
Delete an obsolete comment.
...
llvm-svn: 111711
2010-08-21 02:41:29 +00:00
Daniel Dunbar
e3b8dd433c
IRgen/CGValue: Add alignment to LValue, and use that alignment when generating lvalue load/stores.
...
llvm-svn: 111710
2010-08-21 02:39:23 +00:00
Daniel Dunbar
ab4dbea096
IRgen/LValue: Rename SetQualifiers() to Initialize().
...
llvm-svn: 111708
2010-08-21 02:31:58 +00:00
Daniel Dunbar
0381634a61
IRgen: Change Emit{Load,Store}OfScalar to take a required Alignment argument and
...
update callers as best I can.
- This is a work in progress, our alignment handling is very horrible / sketchy -- I am just aiming for monotonic improvement.
- Serious review appreciated.
llvm-svn: 111707
2010-08-21 02:24:36 +00:00
Daniel Dunbar
a94e3d1124
IRgen: Use Ty consistently in this function.
...
llvm-svn: 111705
2010-08-21 02:17:08 +00:00
Dan Gohman
b1aac3362c
CreateTemporaryType doesn't needs its Context argument.
...
llvm-svn: 111688
2010-08-20 22:39:57 +00:00
Dan Gohman
196f71006e
Introduce a new temporary MDNode concept. Temporary MDNodes are
...
not part of the IR, are not uniqued, and may be safely RAUW'd.
This replaces a variety of alternate mechanisms for achieving
the same effect.
llvm-svn: 111682
2010-08-20 22:02:57 +00:00
Fariborz Jahanian
a50b3a20f1
objective-c ivar refactoring patch. Iterations
...
over ivars for a varienty of puposes is now
consolidated into two small routines; DeepCollectObjCIvars
and ShallowCollectObjCIvars.
llvm-svn: 111679
2010-08-20 21:21:08 +00:00
Douglas Gregor
e3b3464d4e
Fix a major regression with value-initialization of class types with
...
trivial default constructors. We're weren't zero-initializing them,
which manifested as <rdar://problem/8320532> (a regression in the GCC
test suite) and is likely to have caused significant other breakage.
llvm-svn: 111650
2010-08-20 16:57:37 +00:00
Bob Wilson
b02244969d
Translate NEON vmovl intrinsics to zero/sign-extend operations.
...
llvm-svn: 111612
2010-08-20 03:36:08 +00:00
John McCall
f834bcd659
Mangle explicit template arguments in dependent or overloaded names.
...
llvm-svn: 111591
2010-08-20 00:17:19 +00:00
Charles Davis
6bcb07ad71
Add some enum goodness as requested by Chris. Now instead of storing the
...
active C++ ABI as a raw string, we store it as an enum. This should improve
performance somewhat.
And yes, this time, I started from a clean build directory, and
all the tests passed. :)
llvm-svn: 111507
2010-08-19 02:18:14 +00:00
Alexis Hunt
dcfba7b35b
Generate Attr subclasses with TableGen.
...
Now all classes derived from Attr are generated from TableGen.
Additionally, Attr* is no longer its own linked list; SmallVectors or
Attr* are used. The accompanying LLVM commit contains the updates to
TableGen necessary for this.
Some other notes about newly-generated attribute classes:
- The constructor arguments are a SourceLocation and a Context&,
followed by the attributes arguments in the order that they were
defined in Attr.td
- Every argument in Attr.td has an appropriate accessor named getFoo,
and there are sometimes a few extra ones (such as to get the length
of a variadic argument).
Additionally, specific_attr_iterator has been introduced, which will
iterate over an AttrVec, but only over attributes of a certain type. It
can be accessed through either Decl::specific_attr_begin/end or
the global functions of the same name.
llvm-svn: 111455
2010-08-18 23:23:40 +00:00
John McCall
78fbb61ed7
Contextual arity is a feature of mangling expressions; kill off
...
mangleCallExpression. Also, operator names with unknown arity should
be mangled as binary operators; this is actually covered by an oddly-
positioned sentence in the ABI document. Fixes PR7891.
llvm-svn: 111395
2010-08-18 19:18:59 +00:00
Chris Lattner
396639db95
zap dead code.
...
llvm-svn: 111365
2010-08-18 16:09:06 +00:00
Chris Lattner
aa94cc3fcd
fix typo
...
llvm-svn: 111334
2010-08-18 00:13:52 +00:00
Chris Lattner
b1995dffaf
Fix PR7889 by generalizing some over specialized code. There is no
...
reason that this should be limited to simple lvalues.
llvm-svn: 111331
2010-08-18 00:08:27 +00:00
Chris Lattner
00d5141aef
fix PR7892, a crash on valid in c++ codegen of __PRETTY_FUNCTION__
...
llvm-svn: 111330
2010-08-17 23:58:10 +00:00
Daniel Dunbar
56df97761d
StringRef'ication of lots stuff, patch by Peter Davies!
...
llvm-svn: 111314
2010-08-17 22:39:59 +00:00
John McCall
6d86202fa7
Whoops. Don't fall through into the overload case when mangling a
...
dependent call expression.
llvm-svn: 111300
2010-08-17 21:51:21 +00:00
Benjamin Kramer
35b077e674
Convert all uses of StringLiteral::getStrData() to StringLiteral::getString()
...
and remove getStrData(). Patch by Peter Davies (with some tweaks).
llvm-svn: 111229
2010-08-17 12:54:38 +00:00
Charles Davis
53c59df2f7
Implement support for member pointers under the Microsoft C++ ABI in the
...
AST library.
This also adds infrastructure for supporting multiple C++ ABIs in the AST.
llvm-svn: 111117
2010-08-16 03:33:14 +00:00
Argyrios Kyrtzidis
1cec2cc798
Remove dead code, caught by unused function warnings.
...
llvm-svn: 111091
2010-08-15 01:15:58 +00:00
Eli Friedman
1bb53d9cd6
Explicitly handle every case in the switch in RTTIBuilder::BuildTypeInfo.
...
llvm-svn: 111085
2010-08-15 00:24:31 +00:00
John McCall
32427785c0
More cleanup enabling.
...
llvm-svn: 111070
2010-08-14 07:46:19 +00:00
John McCall
612942d65f
Sketch out a framework for delaying the activation of a cleanup.
...
Not yet complete or used.
llvm-svn: 111044
2010-08-13 21:20:51 +00:00
Eli Friedman
a2622dd266
Zap unused UnaryOperator::OffsetOf.
...
llvm-svn: 110996
2010-08-13 01:36:11 +00:00
Fariborz Jahanian
f7f020bb2a
Make use of __func__ in a block actually refer to
...
block's helper function. Fixes radar 7860965.
llvm-svn: 110988
2010-08-13 00:19:55 +00:00
John McCall
b3732bb3b7
Just disable the hidden-visibility optimization for now by hiding it behind
...
a -cc1 option. The Darwin linker complains about mixed visibility when linking
gcc-built objects with clang-built objects, and the optimization isn't really
that valuable. Platforms with less ornery linkers can feel free to enable this.
llvm-svn: 110979
2010-08-12 23:36:15 +00:00
John McCall
398dc37d1f
Implement RTTI generation for Objective C types. Fixes PR7864.
...
llvm-svn: 110900
2010-08-12 02:17:33 +00:00
Devang Patel
caa23f0708
Emit debug info for static const class member.
...
llvm-svn: 110885
2010-08-12 00:02:44 +00:00
John McCall
5996699834
Revise r110163: don't mark weak functions nounwind, because the optimizer
...
treats that as a contract to be fulfilled by any replacements.
llvm-svn: 110864
2010-08-11 22:38:33 +00:00
Devang Patel
d76c1dbe39
Emit a stop point for delegate constructor call. This gives user a chance to step into constructor body.
...
llvm-svn: 110853
2010-08-11 21:04:37 +00:00
John McCall
ffe4630f3d
When re-raising an exception after a cleanup, we need to call _Unwind_Resume_or_Rethrow
...
instead of _Unwind_Resume. With SJLJ exceptions, this is spelled
"_Unwind_SjLj_Resume_or_Rethrow", not "_Unwind_SjLj_Resume", which has
significantly different semantics.
We should actually never be generating a call to _Unwind_SjLj_Resume directly;
even if we were generating true cleanups (which we aren't because of the
horrible hack), we should be calling __cxa_end_cleanup() on ARM. I
haven't implemented this because there's little point as long as the HH is
present.
I believe this fixes <rdar://problem/8281377>.
llvm-svn: 110851
2010-08-11 20:59:53 +00:00
Eli Friedman
961fc05418
Work in progress for PR7864. Someone more familiar with ObjC++ needs to fill
...
in the code after the "FIXME: Needs to be written".
llvm-svn: 110849
2010-08-11 20:41:51 +00:00
Fariborz Jahanian
d539d098a4
IRGen support for functions returning objc object
...
types. Fixes PR7865.
llvm-svn: 110832
2010-08-11 17:37:35 +00:00
John McCall
cebe0ca75e
Fix a bug in @finally emission in both the fragile and non-fragile EH schemes
...
where we weren't accounting for the possibility that a @finally block might
have internal cleanups and therefore might write to the cleanup destination slot.
Fixes <rdar://problem/8293901>.
llvm-svn: 110760
2010-08-11 00:16:14 +00:00
Devang Patel
8166571a25
Simplify
...
llvm-svn: 110716
2010-08-10 20:16:57 +00:00
John Thompson
a5c7d706b8
Slightly revised handling of mult-alt constraints, to avoid an assert, until we have the full fix.
...
llvm-svn: 110706
2010-08-10 19:20:14 +00:00
John McCall
62eb9a8e84
When initializing a static local, pop the guard-abort EH cleanup after
...
the variable is fully initialized.
llvm-svn: 110704
2010-08-10 18:51:44 +00:00
Devang Patel
76e3b53541
Do not use DIGlobalVariable to emit debugging information for enums.
...
llvm-svn: 110697
2010-08-10 18:27:15 +00:00
Devang Patel
dc866e119c
Simplify code and add comments, in code that generate debug info for constant integer globals, based on Chris's feedback.
...
llvm-svn: 110694
2010-08-10 17:53:33 +00:00
Devang Patel
e03edfd3e7
Even if a constant's evaluated value is used, emit debug info for the constant variable.
...
llvm-svn: 110660
2010-08-10 07:24:25 +00:00
Argyrios Kyrtzidis
13257c5527
Support ObjC implementation decls for PCH.
...
Strictly speaking, implementations don't go in headers but there's no law against it.
llvm-svn: 110567
2010-08-09 10:54:20 +00:00
Eric Christopher
6ff7161d51
Thread local variables aren't considered common linkage.
...
llvm-svn: 110530
2010-08-08 01:37:14 +00:00