Eric Christopher
b4a791f7bc
Canonicalize register names properly.
...
Fixes rdar://9425559
llvm-svn: 133486
2011-06-21 00:07:10 +00:00
Eric Christopher
cdd3635b09
Move additional register names to their own lookup, separate from
...
register aliases. Fixes unnecessary renames of clobbers.
Fixes part of rdar://9425559
llvm-svn: 133485
2011-06-21 00:05:20 +00:00
Fariborz Jahanian
ab578bf355
llvm-gcc treats a tentative definition with a previous
...
(or follow up) extern declaration with weak_import as
an actual definition. make clang follows this behavior.
// rdar://9538608
llvm-gcc treats an extern declaration with weak_import
llvm-svn: 133450
2011-06-20 17:50:03 +00:00
Chris Lattner
e64d7ba153
Update to match mainline ConstantStruct::get API change. Also, use
...
ConvertType on InitListExprs as they are being converted. This is
needed for a forthcoming patch, and improves the IR generated anyway
(see additional type names in testcases).
This patch also converts a bunch of std::vector's in CGObjCMac to use
C arrays. There are a ton more that should be converted as well.
llvm-svn: 133413
2011-06-20 04:01:35 +00:00
Douglas Gregor
2486d6632a
Loosen up the IR matching slightly
...
llvm-svn: 133263
2011-06-17 17:23:28 +00:00
Eric Christopher
c2e40c64a0
Remove another variable.
...
llvm-svn: 133262
2011-06-17 17:04:30 +00:00
Douglas Gregor
6c9d31eb25
When emitting a compound literal of POD type, continue to emit a
...
separate aggregate temporary and then memcpy it over to the
destination. This fixes a regression I introduced with r133235, where
the compound literal on the RHS of an assignment makes use of the
structure on the LHS of the assignment.
I'm deeply suspicious of AggExprEmitter::VisitBinAssign()'s
optimization where it emits the RHS of an aggregate assignment
directly into the LHS lvalue without checking whether there is any
aliasing between the LHS/RHS. However, I'm not in a position to
revisit this now.
Big thanks to Eli for finding the regression!
llvm-svn: 133261
2011-06-17 16:37:20 +00:00
Eric Christopher
f067526adb
Clean up test to avoid using standard headers and remove an unneeded
...
#define.
llvm-svn: 133241
2011-06-17 06:16:34 +00:00
Eric Christopher
c8d6afe1d8
Make this test suitable for optimized builds by avoiding the name.
...
llvm-svn: 133238
2011-06-17 05:24:17 +00:00
Eric Christopher
e9544258ef
Check the specific target to figure out if a constraint is a valid
...
register constraint. Note that we're not checking if the register itself
is valid for the constraint.
Fixes rdar://9382985
llvm-svn: 133226
2011-06-17 01:53:34 +00:00
Fariborz Jahanian
a27070db0c
Set the visibility to 'hidden' when previous
...
declaration of global var is __private_extern__.
// rdar://9609649
llvm-svn: 133157
2011-06-16 14:49:42 +00:00
Eli Friedman
e4ff968f56
Test for r133070.
...
llvm-svn: 133079
2011-06-15 20:17:07 +00:00
Eli Friedman
7e68c88bf7
Fix a regression from r132957 involving complex integers. (Fixes failures on gcc-testsuite bot.)
...
llvm-svn: 133069
2011-06-15 18:26:32 +00:00
Eli Friedman
eb7fab61bd
The LLVM IR representation of byval arguments has a rather strange property: if the alignment of an argument to a call is less than the specified byval alignment for that argument, there is no way to specify the alignment of the implied copy. Therefore, we must ensure that the alignment of the argument is at least the byval alignment. To do this, we have to mess with the alignment of relevant alloca's in some cases, and insert a copy that conceptually shouldn't be necessary in some cases.
...
This patch tries relatively hard to avoid creating an extra copy if it can be avoided (see test3 in the included testcase), but it is not possible to avoid in some cases (like test2 in the included testcase).
rdar://9483886
llvm-svn: 132957
2011-06-14 01:37:52 +00:00
Stuart Hastings
7fdc6707ac
Clang support for ARM Uv/Uy/Uq inline-asm constraints.
...
rdar://problem/9037836
llvm-svn: 132737
2011-06-07 23:45:05 +00:00
Galina Kistanova
f56b4f6fdd
These tests require particular registered targets. Declared as such.
...
llvm-svn: 132600
2011-06-03 22:24:54 +00:00
Galina Kistanova
b38fd263bd
Added registered targets for in-test dependency declarations.
...
llvm-svn: 132571
2011-06-03 18:36:30 +00:00
John McCall
77bdccd9bc
Test case for some AVX builtins. Patch by Syoyo Fujita!
...
llvm-svn: 132518
2011-06-03 00:02:45 +00:00
Galina Kistanova
123363cf10
Reverted r132330, r132321, r132320, r132319 as per discussion. Will try in-test requirement declarations instead.
...
llvm-svn: 132491
2011-06-02 21:55:39 +00:00
Rafael Espindola
fb2af643e4
Implement -fgnu89-inline. Fixes PR10041.
...
llvm-svn: 132460
2011-06-02 16:13:27 +00:00
Galina Kistanova
4503e20ae6
Just one for now to see how it will fly.
...
llvm-svn: 132321
2011-05-31 00:34:37 +00:00
Eli Friedman
b857842c48
Add unnamed_addr to internal globals which are only used as an operand to memcpy. (Spotted by looking at IR.)
...
llvm-svn: 132226
2011-05-27 22:32:55 +00:00
Eli Friedman
6ffb623a52
Match llvm-gcc's string literals alignment by forcing alignment on string literals to 1. This can significantly impact the size of the string data, and as far as I know, the alignment doesn't help performance. rdar://9078969 .
...
llvm-svn: 132223
2011-05-27 22:13:20 +00:00
Eli Friedman
df96819daf
Skip extra copy from aggregate where it isn't necessary; rdar://problem/8139919 . This shouldn't make much of a difference at -O3, but should substantially reduce the number of generated memcpy's at -O0.
...
Originally r130717, but was backed out due to an ObjC regression.
llvm-svn: 132102
2011-05-26 00:10:27 +00:00
Chris Lattner
e76b95ae15
make the x86-32 backend specify a byval alignment, even when the
...
code generator will do it. With this patch, clang compiles the example
in PR9794 to not have an alloca temporary.
llvm-svn: 131881
2011-05-22 23:35:00 +00:00
Chris Lattner
44c2b90556
Fix x86-64 byval passing to specify the alignment even when the code
...
generator will give it something sufficient. This is important because
the mid-level optimizer doesn't know what alignment is required otherwise.
llvm-svn: 131879
2011-05-22 23:21:23 +00:00
Nick Lewycky
2e83c4c4c3
Fix fallout from r131838.
...
llvm-svn: 131844
2011-05-22 06:50:05 +00:00
Eli Friedman
2f1e9e618c
Make __builtin_shufflevector and -ftrapv work correctly together. PR9945.
...
llvm-svn: 131611
2011-05-19 00:37:32 +00:00
Joerg Sonnenberger
caf8ffd8e3
Bug 8765: Honor assembler labels for builtins. Ensure that the label is
...
mangled to avoid doing it twice for platforms that use prefixes like
Darwin.
llvm-svn: 131311
2011-05-13 21:12:10 +00:00
Bill Wendling
bb455154a1
Remove the 'unaligned load' builtins now that they're no longer used in the *mmintrin.h files.
...
llvm-svn: 131300
2011-05-13 18:52:28 +00:00
Bill Wendling
e106c34817
LLVM doesn't always optimize away the four loads from this:
...
(__m128){ p[0], p[1], p[2], p[3] }
which produces really bad code. This could be done in instcombine, but it's
probably better to do it in the front-end instead.
<rdar://problem/9424836>
llvm-svn: 131237
2011-05-12 19:02:15 +00:00
Fariborz Jahanian
b0c0cdc509
Clean up consequences of cut and paste.
...
llvm-svn: 131190
2011-05-11 17:07:02 +00:00
Fariborz Jahanian
783243b3ca
Implenment #pack pragma and ms_struct attribute layout.
...
Concludes // radar://8823265.
llvm-svn: 131188
2011-05-11 16:58:31 +00:00
Fariborz Jahanian
07ceb0a1a4
Support pack pragma and ms_struct attributes. // rdar://8823265
...
llvm-svn: 131142
2011-05-10 19:00:50 +00:00
Fariborz Jahanian
7adbed6b4d
'long long' requires special treatment in ms_struct
...
structs (impacts 32-bit only though).
llvm-svn: 131103
2011-05-09 22:03:17 +00:00
Douglas Gregor
9ca5465500
Revert r130717, which caused a regression (<rdar://problem/9402621>).
...
llvm-svn: 131057
2011-05-07 20:12:26 +00:00
Fariborz Jahanian
307eace474
In ms_struct structs, Establish a new alignment for a
...
non-bitfield following a bitfield if size of their types differ.
llvm-svn: 131032
2011-05-06 22:42:22 +00:00
Fariborz Jahanian
b7a2879677
Establish a new alignment for an ms_struct bitfield following
...
a non-bitfield if size of their types differ.
llvm-svn: 131023
2011-05-06 21:56:12 +00:00
Eli Friedman
409943efcb
Don't emit nsw flags for vector operations; there's basically no benefit, and a lot of downside (like PR9850, which is about clang's xmmintrin.h making an unexpected transformation on an expression involving _mm_add_epi32).
...
llvm-svn: 131000
2011-05-06 18:04:18 +00:00
Fariborz Jahanian
9f1071831f
__alignof attribute on the field must consider
...
packed attribute on the field. //rdar://9217290
llvm-svn: 130948
2011-05-05 21:19:14 +00:00
Daniel Dunbar
6cb7f64e8b
tests: Force a triple in this test (so uint128 is present).
...
llvm-svn: 130941
2011-05-05 18:54:06 +00:00
Devang Patel
979aba5d09
Do not drop uint128 on the floor.
...
llvm-svn: 130929
2011-05-05 17:06:30 +00:00
Fariborz Jahanian
9d82fea378
And a test case for my last patch.
...
llvm-svn: 130853
2011-05-04 18:58:27 +00:00
Fariborz Jahanian
84335f7c8e
More ms_struct bitfield stuff:
...
Adjacent bit fields are packed into the same 1-, 2-, or
4-byte allocation unit if the integral types are the same
size. // rdar://8823265.
llvm-svn: 130851
2011-05-04 18:51:37 +00:00
Fariborz Jahanian
759e4a1add
Only the first zero-length bitfield decides alignment of
...
the followup data member in an ms_struct struct.
// rdar:// 8823265
llvm-svn: 130795
2011-05-03 22:07:14 +00:00
Fariborz Jahanian
fc0fe6eb52
Finish off rules for z-length bitfields in ms_struct
...
structs. // rdar://8823265
llvm-svn: 130783
2011-05-03 20:21:04 +00:00
Chad Rosier
f897d3b88b
Fixed test case asserts due to checkin of r130710.
...
llvm-svn: 130720
2011-05-02 20:39:21 +00:00
Eli Friedman
30458b51e3
Skip extra copy from aggregate where it isn't necessary; rdar://problem/8139919 . This shouldn't make much of a difference at -O3, but should substantially reduce the number of generated memcpy's at -O0.
...
llvm-svn: 130717
2011-05-02 20:24:29 +00:00
Fariborz Jahanian
eb39741c0b
More rule enforcement of zero bitfields for ms_struct.
...
llvm-svn: 130696
2011-05-02 17:20:56 +00:00
Fariborz Jahanian
99514b9168
block variables on lhs need be ir-gen'ed after the
...
rhs when its 'forwarding' pointer may be modified
in rhs evaluation as result of call to Block_copy.
// rdar://9309454
llvm-svn: 130545
2011-04-29 21:53:21 +00:00