aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen
AgeCommit message (Collapse)Author
2012-03-30Add _mm_minpos_epu16 to smmintrin.h. Fixes PR12399.Craig Topper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153726 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-30Fix shuffle vector calculation for mm_permute_ps. Fixes PR 12401.Craig Topper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153724 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-30The UTF16 string referenced by a CFString should go into the __TEXT,__ustringBill Wendling
section. A 'normal' string will go into the __TEXT,__const section, but this isn't good for UTF16 strings. The __ustring section allows for coalescing, among other niceties (such as allowing the linker to easily split up strings). Instead of outputting the UTF16 string as a series of bytes, output it as a series of shorts. The back-end will then nicely place the UTF16 string into the correct section, because it's a mensch. <rdar://problem/10655949> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153710 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-29Relax the test slightly so that it should pass on other people's computers.David Chisnall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153670 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-29Call out to GCC-compatible runtime functions for atomic ops that we can't useDavid Chisnall
LLVM intrinsics for. I have an implementation of these functions, which wants to go in a libgcc_s equivalent in compiler-rt. It's currently here: http://people.freebsd.org/~theraven/atomic.c It will be committed to compiler-rt as soon as I work out where would be a sensible place to put it... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153666 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Add better support for $fp and $sp for mips inline asm support.Eric Christopher
Patch by Jack Carter. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153530 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26[tests] Fix test failure in release mode.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153460 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-26add tbaa metadata to vtable pointer loads/storesKostya Serebryany
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153447 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-24Add back r153360 with a fix for enums that cover all the 32 bit values.Rafael Espindola
Thanks to NAKAMURA Takumi for finding it! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153383 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-24Revert r153360 (and r153380), "Second part of PR12251. Produce the range ↵NAKAMURA Takumi
metadata in clang for booleans and". For i686 targets (eg. cygwin), I saw "Range must not be empty!" in verifier. It produces (i32)[0x80000000:0x80000000) from (uint64_t)[0xFFFFFFFF80000000ULL:0x0000000080000000ULL), for signed i32 on MDNode::Range. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153382 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-24Second part of PR12251. Produce the range metadata in clang for booleans andRafael Espindola
c++ enums. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153360 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-22Small cleanup.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153292 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-22Use correct FileCheck regexp.Bill Wendling
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153291 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-22When an MMX output variable is tied to the input variable, we have to implicitlyBill Wendling
cast the value to x86_mmx. This gives the ASM string the correct call signature. <rdar://problem/10919182> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153290 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-22line endingsMatt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153289 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-22Make sure we correctly set the alignment for vector loads and stores ↵Eli Friedman
associated with vector element lvalues. Patch by Kevin Schoedel (with some minor modifications by me). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153285 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-16Don't try to create "store atomic" instructions of non-integer types; they ↵Eli Friedman
aren't supported at the moment. PR12040. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152891 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15When a variable has a specified asm name, but isn't using the register ↵Eli Friedman
storage class, the asm name doesn't specify a register. PR12244. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152873 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15[frontend] Fix how the frontend handles -fno-inline. AFAIK clang now matchesChad Rosier
the behavior of gcc with respect to the -fno-inline and -fno-inline-functions flags. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152861 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15Fix codegen for vld{3,4}_dup intrinsics.James Molloy
Patch by Silviu Baranga! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152788 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-14[frontend] Add support for disabling the "inline" keyword using Chad Rosier
-fno-inline-functions. This behaves much like -fno-inline in gcc, but based on a discussion with Daniel it was decided that -fno-inline-functions should subsume -fno-inline. Please speak up if you object. The -fno-inline flag remains ignored. Final part of rdar://10972766 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152754 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-13Fix the long double to be of width/align 64. Rename va_list_test toRoman Divacky
powerpc_types and add testing for the (long) double there. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152647 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-12Use ZeroLengthBitfieldAlignment for AAPCS, as well as APCS-GNU.James Molloy
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152552 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-10IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes.Daniel Dunbar
- We do this when it is easy to determine that the backend will pass them on the stack properly by itself. Currently LLVM codegen is really bad in some cases with byval, for example, on the test case here (which is derived from Sema code, which likes to pass SourceLocations around):: struct s47 { unsigned a; }; void f47(int,int,int,int,int,int,struct s47); void test47(int a, struct s47 b) { f47(a, a, a, a, a, a, b); } we used to emit code like this:: ... movl %esi, -8(%rbp) movl -8(%rbp), %ecx movl %ecx, (%rsp) ... to handle moving the struct onto the stack, which is just appalling. Now we generate:: movl %esi, (%rsp) which seems better, no? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152462 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-06[driver] What was implemented in r152130 was actually -fno-inline-functions, notChad Rosier
-fno-inline. Part of rdar://10972766 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152145 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-06Whitespace.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152134 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-06[driver] Add support for -fno-inline.Chad Rosier
rdar://10972766 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152130 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-04From his comment in PR12168, Eli seems confused about the alignment assumptionsChris Lattner
we're making. We only ignore implicit casts. Add a testcase showing that we get the right behavior with explicit casts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151994 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-04add a testcase for PR12094 and fix a crash on pointer to incomplete type,Chris Lattner
reported by Richard Smith. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151993 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-29I referenced the incorrect rdar in my previous commit (r151745). Add the Chad Rosier
correct radar number to the test case for tracking purposes. rdar://10551066 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151746 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-29Allocate TargetLibraryInfo for the CodeGen passes. Otherwise, it's instantiatedChad Rosier
by the BAA pass, which uses the default TargetLibraryInfo constructor. Unfortunately, the default TargetLibraryInfo constructor assumes all library calls are available and thus ignores -fno-builtin. rdar://10947759 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151745 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-29Reapply r151638 and r151641.James Molloy
The bug that was caught by Apple's internal buildbots was valid and also showed another bug in my implementation. These are now fixed, with regression tests added to catch them both (not Darwin-specific). Original log: ==================== Revert r151638 because it causes assertion hit on PCH creation for Cocoa.h Original log: --------------------- Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped. This fixes code such as: enum e {x, y}; int f(enum {y, x} n) { return 0; } This finally fixes PR5464 and PR5477. --------------------- I also reverted r151641 which was enhancement on top of r151638. ==================== git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151712 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28Revert r151638 because it causes assertion hit on PCH creation for Cocoa.hArgyrios Kyrtzidis
Original log: --------------------- Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped. This fixes code such as: enum e {x, y}; int f(enum {y, x} n) { return 0; } This finally fixes PR5464 and PR5477. --------------------- I also reverted r151641 which was enhancement on top of r151638. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151667 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28Correctly track tags and enum members defined in the prototype of a ↵James Molloy
function, and ensure they are properly scoped. This fixes code such as: enum e {x, y}; int f(enum {y, x} n) { return 0; } This finally fixes PR5464 and PR5477. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151638 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-27Add missing code for compound literals of complex type. ↵Eli Friedman
<rdar://problem/10938628> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151549 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-27Test case for r151429/r151430, which ensures llvm.lifetime intrinsics are notChad Rosier
being emitted at -O0, but are emitted when optimizations are enabled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151533 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-24Fix a stupid mistake in r151133. Reported to me by Joerg Sonnenberger.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151407 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-23Turned on support for __declspecs: noreturn, noinline, nothrow and naked in ↵Aaron Ballman
MS compatibility mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151295 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-20Add 3dNOW intrinsic header to x86intrin.h, conditioned on __3dNOW__ toChandler Carruth
match the behavior of GCC. Also add a test for these intrinsics, which apparently have *zero* tests. =[ Not surprisingly, Clang crashed when compiling these. Fix the bug in CodeGen where we failed to bitcast the argument type to x86mmx prior to calling the LLVM intrinsic. This fixes an assert on the new 3dnow-builtins.c test. This is one issue impacting the efforts to get Clang to emulate the Microsoft intrinsics headers -- 3dnow intrinsics are implictitly made available there. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150948 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-18Implement #pragma redefine_extname.David Chisnall
This fixes PR5172 and allows clang to compile C++ programs on Solaris using the system headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150881 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10Loosen the test from r150238 a bit to make some of our bots happy.Evgeniy Stepanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150242 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10Fix function prolog codegen whe coerce-to type is a struct.Evgeniy Stepanov
This changes function prolog in such a way as to avoid out-of-bounds stack store in the case when coerce-to type has a larger storage size than the real argument type. Fixes PR11905. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150238 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Class objects passed by value follow the same rules as structure objects.Akira Hatanaka
Double fields of by-value class objects should be passed in floating point registers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150200 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09Fix bugs in function MipsABIInfo::returnAggregateInRegs. Functions returningAkira Hatanaka
class objects follow the same rules as those returning struct objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150196 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Remove vperm2f* and vperm2i builtins. Same effect can be achieved with ↵Craig Topper
builtin_shufflevector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150064 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Remove vpermilp* builtins. Same effect can be achieved with ↵Craig Topper
builtin_shufflevector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150056 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08Do not return records with non trivial destructors or copy constructors inAkira Hatanaka
registers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150035 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07Make FunctionDecl::doesDeclarationForceExternallyVisibleDefinition use the ↵Eli Friedman
same logic as FunctionDecl::isInlineDefinitionExternallyVisible to figure out whether to emit a definition. Based on work by Anton Yartsev. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149963 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-04Preserve alignment for Neon vld1_lane/dup and vst1_lane intrinsics.Bob Wilson
We had been generating load/store instructions with the default alignment for the vector element type, even when the pointer argument had less alignment. <rdar://problem/10538555> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149794 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-03Update tests so that they don't rely upon LLVMDebugVersion number.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149726 91177308-0d34-0410-b5e6-96231b3b80d8