Richard Smith
5fab0c9e1a
Small refactoring and simplification of constant evaluation and some of its
...
clients. No functionality change.
llvm-svn: 147318
2011-12-28 19:48:30 +00:00
Douglas Gregor
deafd0b2a4
Eliminate ObjCClassDecl, which is redundant now that ObjCInterfaceDecl
...
covers both declarations (@class ) and definitions (@interface) of an
Objective-C class.
llvm-svn: 147299
2011-12-27 22:43:10 +00:00
Richard Smith
6e52514c5d
constexpr: support for evaluation and codegen of typeid constants.
...
llvm-svn: 147290
2011-12-27 12:18:28 +00:00
Craig Topper
f2855ade2b
Add intrinsics for lzcnt and tzcnt instructions.
...
llvm-svn: 147263
2011-12-25 06:25:37 +00:00
Eli Friedman
5c9cd7a8a3
Fix a failure (which led to a crash) in constant emission code with vector compound literals.
...
llvm-svn: 147111
2011-12-22 00:04:00 +00:00
David Blaikie
68e081d606
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
...
llvm-svn: 146959
2011-12-20 02:48:34 +00:00
Bill Wendling
bd26cf90dc
Mark the calls to the _setjmp function as returns twice. <rdar://problem/10492556>
...
llvm-svn: 146926
2011-12-19 23:53:28 +00:00
Eli Friedman
3184a5e482
Switch a few callers of MakeAddrLValue places over to MakeNaturalAlignAddrLValue.
...
llvm-svn: 146920
2011-12-19 23:03:09 +00:00
Chris Lattner
2415357a05
Fix PR5279 - don't sliently drop alignment information on stores of types that have alignment less than the natural alignment of the type when it comes from a typedef.
...
llvm-svn: 146908
2011-12-19 21:16:08 +00:00
Rafael Espindola
4fdc1759ca
Extend the fix for PR9614 to handle inline asm in the outer decl and
...
the inner decl being a builtin. This is needed to support the glibc headers
in fedora 16 (2.14).
llvm-svn: 146867
2011-12-19 14:41:01 +00:00
Craig Topper
94aba2c260
More AVX2 intrinsic support including saturating add/sub and palignr.
...
llvm-svn: 146857
2011-12-19 07:03:25 +00:00
Eric Christopher
cd88813dbf
When in a limited debug information situation if we can find the original
...
declaration for the type then go ahead and use that, it's still smaller
than creating an all new derived type.
Part of rdar://10335756 and others.
llvm-svn: 146779
2011-12-16 23:40:18 +00:00
Eric Christopher
ea225fb412
Start down the path of getting clang to internally agree on structs versus
...
classes.
Part of rdar://10520586 and a couple others.
llvm-svn: 146778
2011-12-16 23:40:14 +00:00
Douglas Gregor
c8b0c9d8fd
When generating debug info for an ObjCInterfaceDecl, try to dig out the definition.
...
llvm-svn: 146705
2011-12-15 23:32:29 +00:00
Douglas Gregor
dc9166c8e1
Keep track of all declarations of an Objective-C class (both forward
...
declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"
llvm-svn: 146679
2011-12-15 20:29:51 +00:00
Douglas Gregor
0b144e160a
Replace all comparisons between ObjCInterfaceDecl pointers with calls
...
to declaresSameEntity(), as a baby step toward tracking forward
declarations of Objective-C classes precisely. Part of
<rdar://problem/10583531>.
llvm-svn: 146618
2011-12-15 00:29:59 +00:00
Chad Rosier
1332d9b26a
Per discussion on the list, remove BitcodeVerify pass to reimplement as a free function.
...
llvm-svn: 146530
2011-12-14 00:29:23 +00:00
Eli Friedman
3c840aad54
Make CGRecordLayoutBuilder correctly switch over to a packed class when a class has a base whose alignment will break the class layout. <rdar://problem/10551376>.
...
llvm-svn: 146443
2011-12-12 23:13:20 +00:00
Chad Rosier
c4399f779b
Add frontend flags to enable bitcode verifier pass.
...
llvm-svn: 146441
2011-12-12 23:05:47 +00:00
Tony Linthicum
76329bf83f
Hexagon backend support
...
llvm-svn: 146413
2011-12-12 21:14:55 +00:00
Chandler Carruth
a31b95cacf
Update Clang to emit the new form of llvm.cttz and llvm.ctlz intrinsics,
...
setting the is_zero_undef flag appropriately to true as that matches the
semantics of these GCC builtins.
This is the Clang side of r146357 in LLVM.
llvm-svn: 146358
2011-12-12 04:28:35 +00:00
Benjamin Kramer
4257ab3ff0
Reuse forAddr to create ignored AggValueSlots.
...
Silences valgrind warnings about uninitalized alignment values.
llvm-svn: 146342
2011-12-11 16:34:24 +00:00
Eli Friedman
de6a86b4f6
Make array new on a pointer to data member type work correctly. PR11523.
...
llvm-svn: 146291
2011-12-09 23:05:37 +00:00
Bill Wendling
90118a3c9b
Don't get the exception obj from the slot more than once.
...
llvm-svn: 146202
2011-12-08 23:21:26 +00:00
Eli Friedman
516c2ad731
Fix an edge case in IRGen for conditionals. PR11509.
...
llvm-svn: 146189
2011-12-08 22:01:56 +00:00
Eli Friedman
dae858aca3
Make sure we correctly zero-initialize unions containing a pointer to data member as the first field. PR11487.
...
llvm-svn: 146009
2011-12-07 01:30:11 +00:00
Nick Lewycky
f4d3f7a0b9
Stack realignment is a tristate. Add -mno-stackrealign to turn off all stack
...
realignment, even with locals with alignment exceeding the ABI guarantee.
llvm-svn: 145909
2011-12-06 03:33:03 +00:00
Eli Friedman
b8e45b28da
Minor comment update.
...
llvm-svn: 145905
2011-12-06 03:08:26 +00:00
Joerg Sonnenberger
db66ed0e4c
Add -mstack-alignment=X and fix -mstackrealign handling now that the
...
backend options are gone.
llvm-svn: 145868
2011-12-05 23:05:23 +00:00
Eli Friedman
6d694a38fd
Make EmitAggregateCopy take an alignment argument. Make EmitFinalDestCopy pass in the correct alignment when known.
...
The test includes a FIXME for a related case involving calls; it's a bit more complicated to fix because the RValue class doesn't keep track of alignment.
<rdar://problem/10463337>
llvm-svn: 145862
2011-12-05 22:23:28 +00:00
Eli Friedman
a0544d6fdf
Switch LValue so that it exposes alignment in CharUnits. (No functional change.)
...
llvm-svn: 145753
2011-12-03 04:14:32 +00:00
Eli Friedman
2869b5afe3
Add a utility to get a RValue for a given LValue for an aggregate; switch a few places over to it.
...
llvm-svn: 145747
2011-12-03 03:08:40 +00:00
Eli Friedman
38cd36dbdb
Switch the Alignment argument on AggValueSlot over to CharUnits, per John's review comment.
...
llvm-svn: 145741
2011-12-03 02:13:40 +00:00
Eli Friedman
c1d85b931e
Track alignment in AggValueSlot. No functional change in this patch, but I'll be introducing uses of the specified alignment soon.
...
llvm-svn: 145736
2011-12-03 00:54:26 +00:00
Douglas Gregor
ba34552e79
Introduce a module import declaration, so that we properly represent, e.g.,
...
__import_module__ std.vector;
in the AST.
llvm-svn: 145725
2011-12-02 23:23:56 +00:00
Nick Lewycky
432add5b8f
Update for change to LLVM TargetMachine API in r145714.
...
llvm-svn: 145715
2011-12-02 22:17:00 +00:00
Richard Smith
d572f82e49
Fix wrong-code bug when a const automatic variable of struct type has both a
...
mutable member and a constant initializer. We'd previously promoted such
variables to global constants, resulting in nasal demons if the mutable member
was modified.
This is only a temporary fix. The subtle interplay between isConstantInitializer
and CGExprConstant is very bug-prone; there are some other issues in this area
which I will be addressing in subsequent, more major reworking of this code.
llvm-svn: 145654
2011-12-02 00:30:33 +00:00
Eli Friedman
bfd5addf4c
When we're passing a vector with an illegal type through memory on x86-64, use byval so we're sure the backend does the right thing. Fixes va_arg with illegal vectors and an obscure ABI mismatch with __m64 vectors.
...
llvm-svn: 145652
2011-12-02 00:11:43 +00:00
David Chisnall
6aec31a5cf
Fix -forwardingTargetForSelector: (GNUstep runtime) which was broken for the
...
old dispatch mechanism when I introduced the new one.
llvm-svn: 145609
2011-12-01 18:40:09 +00:00
Eli Friedman
f37bd2f2f1
Don't use a varargs convention for calls unprototyped functions where one of the arguments is an AVX vector.
...
llvm-svn: 145574
2011-12-01 04:53:19 +00:00
Douglas Gregor
de3ef502a9
Promote ModuleMap::Module to a namespace-scope class in the Basic
...
library, since modules cut across all of the libraries. Rename
serialization::Module to serialization::ModuleFile to side-step the
annoying naming conflict. Prune a bunch of ModuleMap.h includes that
are no longer needed (most files only needed the Module type).
llvm-svn: 145538
2011-11-30 23:21:26 +00:00
Kostya Serebryany
d47685769e
make asan work at -O0, clang part. Patch by glider@google.com
...
llvm-svn: 145531
2011-11-30 22:20:21 +00:00
Bob Wilson
5f4e3a780f
Add bigger method type encodings to protocol objects. <rdar://problem/10492418>
...
The new metadata are method @encode strings with additional data.
1. Each Objective-C object is marked with its class name and protocol names.
The same is done for property @encode already.
2. Each block object is marked with its function prototype's @encoding. For
example, a method parameter that is a block object that itself returns void
and takes an int would look like:
@?<v@?i>
These new method @encode strings are stored in a single array pointed to by structs protocol_t and objc_protocol_ext.
Patch provided by Greg Parker!
llvm-svn: 145469
2011-11-30 01:57:58 +00:00
Eric Christopher
607fb70750
Make sure that forward declarations are marked as such in the debug info
...
for the structure type.
rdar://10499337
llvm-svn: 145461
2011-11-29 23:57:40 +00:00
Benjamin Kramer
3df1a2dd59
The cheap version of getName() is sufficient here.
...
llvm-svn: 145399
2011-11-29 14:46:55 +00:00
Bill Wendling
bcefeae5c1
The _setjmp builtin library function should have the "returns twice"
...
attribute. This prevents the stack slot allocator from coming along and using a
stack which it thinks is available but isn't.
<rdar://problem/10492556>
llvm-svn: 145332
2011-11-29 00:10:10 +00:00
Tanya Lattner
71f1b2dcd4
Correct the code generation for function arguments of vec3 types on x86_64 when they are greater than 128 bits. This was incorrectly coercing things like long3 into a double2.
...
Add test case.
llvm-svn: 145312
2011-11-28 23:18:11 +00:00
Peter Collingbourne
eec0a2aa87
Another silly workaround for MSVC.
...
llvm-svn: 145227
2011-11-28 04:29:10 +00:00
Peter Collingbourne
fc38dfe499
Sigh, another workaround for MSVC.
...
llvm-svn: 145211
2011-11-28 00:41:08 +00:00
Peter Collingbourne
1424b308c3
Work around a gcc4.2 bug.
...
llvm-svn: 145209
2011-11-28 00:18:21 +00:00