summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/TargetInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add definition of a static member of a class.Akira Hatanaka2011-08-121-0/+2
| | | | llvm-svn: 137411
* Handle "homogeneous aggregates" as required by the ARM AAPCS-VFP ABI.Bob Wilson2011-08-031-0/+74
| | | | | | | | | | | | | A homogeneous aggregate is an aggregate data structure where after flattening any nesting there are 1 to 4 elements of the same base type that is either a float, double, or Neon vector. All Neon vectors of the same size, either 64 or 128 bits, are treated as equivalent for this purpose. When using the AAPCS-VFP ABI, check for homogeneous aggregates and pass them as arguments by expanding them into a sequence of their base types. This requires extending the existing support for expanded arguments to handle not only structs, but also constant arrays and complex types. llvm-svn: 136767
* Implements alignment for long long and double types in va_arg on ARM AAPCS.Rafael Espindola2011-08-021-1/+10
| | | | | | Patch by Jim (Ningjie) Chen. llvm-svn: 136734
* Revert "Re-enable byval for ARM in clang. rdar://problem/7662569"Bob Wilson2011-08-011-10/+6
| | | | | | | | | | | This reverts commit 67d097e1232b7d66f58989c16a45b8a11721f76e. We found a miscompile with ARM byval, which is still being investigated. In the meantime, this works around the problem by disabling ARM byval. Conflicts: lib/CodeGen/TargetInfo.cpp llvm-svn: 136662
* Implement MipsABIInfo::EmitVAArg. This fix enables clang to complete compilationAkira Hatanaka2011-08-011-1/+31
| | | | | | | | | | without bailing out when va_arg is an aggregate expression. However, alignment checking needs to be added in isSafeToEliminateVarargsCast in InstCombineCalls.cpp in order to produce correct mips code (see link below). http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-July/042047.html llvm-svn: 136647
* Pass records with non-trivial destructors or constructors indirectly.Akira Hatanaka2011-08-011-0/+5
| | | | llvm-svn: 136630
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-231-8/+8
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* de-constify llvm::Type, patch by David Blaikie!Chris Lattner2011-07-181-30/+30
| | | | llvm-svn: 135370
* Fix typoJoerg Sonnenberger2011-07-151-1/+1
| | | | llvm-svn: 135285
* Reapply r134946 with fixes. Tested on Benjamin testcase and other test-suite ↵Bruno Cardoso Lopes2011-07-131-2/+10
| | | | | | failures. llvm-svn: 135091
* Revert r134946Bruno Cardoso Lopes2011-07-121-8/+1
| | | | llvm-svn: 135004
* Fix a typo!Bruno Cardoso Lopes2011-07-121-1/+1
| | | | llvm-svn: 134952
* Do the same as r134946 for arrays. Add more testcases for avx x86_64 argBruno Cardoso Lopes2011-07-121-0/+7
| | | | | | passing. llvm-svn: 134951
* Fix one x86_64 abi issue and the test to actually look for the right thing,Bruno Cardoso Lopes2011-07-121-1/+8
| | | | | | which is: { <4 x float>, <4 x float> } should continue to go through memory. llvm-svn: 134946
* Reapply r134754, which turns out to be working correctly and alsoBruno Cardoso Lopes2011-07-111-41/+73
| | | | | | add one more testcase. llvm-svn: 134934
* De-constify Types in StructType::get() and TargetData::getIntPtrType().Jay Foad2011-07-111-11/+11
| | | | llvm-svn: 134893
* clang side to match the LLVM IR type system rewrite patch.Chris Lattner2011-07-091-38/+35
| | | | llvm-svn: 134831
* Change -mno-mmx to be more compatible with gcc. Specifically, -mno-mmx ↵Eli Friedman2011-07-081-8/+16
| | | | | | | | | | | | should not imply -mno-sse. Note that because we don't usually touch the MMX registers anyway, all -mno-mmx needs to do is tweak the x86-32 calling convention a little for vectors that look like MMX vectors, and prevent the definition of __MMX__. clang doesn't actually stop the user from using MMX inline asm operands or MMX builtins in -mno-mmx mode; as a QOI issue, it would be nice to diagnose, but I doubt it really matters much. <rdar://problem/9694837> llvm-svn: 134770
* Revert x86_64 ABI changes until I have time to check the items raised by Eli.Bruno Cardoso Lopes2011-07-081-74/+42
| | | | llvm-svn: 134765
* Add support for AVX 256-bit in the x86_64 ABI (as in the 0.99.5 draft)Bruno Cardoso Lopes2011-07-081-42/+74
| | | | llvm-svn: 134754
* Don't use x86_mmx where it isn't necessary.Eli Friedman2011-07-021-6/+1
| | | | | | The start of some work on getting -mno-mmx working the way we want it to. llvm-svn: 134300
* We don't pass classes with a copy-constructor or destructor byval, so the ↵Eli Friedman2011-06-291-0/+2
| | | | | | | | | | address takes up an integer register (if one is available). Make sure the x86-64 ABI implementation takes that into account properly. The fixed implementation is compatible with the implementation both gcc and llvm-gcc use. rdar://9686430 . (This is the issue that was reported in the thread "[LLVMdev] Segfault calling LLVM libs from a clang-compiled executable".) llvm-svn: 134059
* De-Unicode-ify in comments.NAKAMURA Takumi2011-06-211-1/+1
| | | | llvm-svn: 133501
* update for api change.Chris Lattner2011-06-181-7/+4
| | | | llvm-svn: 133365
* Automatic Reference Counting.John McCall2011-06-151-2/+4
| | | | | | | | | | Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. llvm-svn: 133103
* Add stuff for o32 ABI conformance.Akira Hatanaka2011-06-021-1/+60
| | | | llvm-svn: 132443
* make the x86-32 backend specify a byval alignment, even when theChris Lattner2011-05-221-1/+1
| | | | | | | code generator will do it. With this patch, clang compiles the example in PR9794 to not have an alloca temporary. llvm-svn: 131881
* Fix x86-64 byval passing to specify the alignment even when the codeChris Lattner2011-05-221-7/+4
| | | | | | | 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
* Add ARMTargetCodeGenInfo::initDwarfEHRegSizeTable() defining 16 32bit regs.Roman Divacky2011-05-181-0/+16
| | | | llvm-svn: 131558
* Revert r131447, see if it fixes the buildbot.Argyrios Kyrtzidis2011-05-171-2/+5
| | | | llvm-svn: 131450
* Inside isEmptyRecord function, for CXXRecordDecl just check the isEmpty bit.Argyrios Kyrtzidis2011-05-171-5/+2
| | | | llvm-svn: 131447
* Raise ARM byval minimum size from 32 to 64, addressing a performanceStuart Hastings2011-04-281-1/+1
| | | | | | regression in mason. rdar://problem/7662569 llvm-svn: 130444
* Replace unitary array with scalar. rdar://problem/7662569Stuart Hastings2011-04-281-3/+3
| | | | llvm-svn: 130423
* Replace SmallVector with an array, as suggested by Frits van Bommel. ↵Stuart Hastings2011-04-281-13/+6
| | | | | | rdar://problem/7662569 llvm-svn: 130417
* Re-enable byval for ARM in clang. rdar://problem/7662569Stuart Hastings2011-04-271-11/+22
| | | | llvm-svn: 130312
* Temporarily revert r130176, it appears to have broken a few tests.Eric Christopher2011-04-261-22/+11
| | | | llvm-svn: 130179
* Turn on byval parameters in Clang for ARM APCS. rdar://problem/7662569Stuart Hastings2011-04-251-11/+22
| | | | llvm-svn: 130176
* PTX: Add default PTX calling conventionsJustin Holewinski2011-04-221-0/+72
| | | | llvm-svn: 129987
* The 0.98 revision of the x86-64 ABI clarified a lot of things, someJohn McCall2011-04-211-6/+24
| | | | | | | of which break strict compatibility with previous compilers. Implement one of them and then immediately opt out on Darwin. llvm-svn: 129899
* ADT/Triple: Switch to using .isOSDarwin() predicate.Daniel Dunbar2011-04-191-2/+3
| | | | llvm-svn: 129823
* fix a bunch of comment typos found by codespell. Patch byChris Lattner2011-04-151-5/+5
| | | | | | Luis Felipe Strano Moraes! llvm-svn: 129559
* Implement ARM pcs attribute. Basically it's another way of calling ↵Anton Korobeynikov2011-04-141-6/+12
| | | | | | | | | | convention selection (AAPCS or AAPCS+VFP), similar to fastcall / stdcall / whatevercall seen on x86. In particular, all library functions should always be AAPCS regardless of floating point ABI used. llvm-svn: 129534
* Set AAPCS-VFP calling convention accordingly and hard float ABI command ↵Sandeep Patel2011-04-051-6/+10
| | | | | | handling. llvm-svn: 128866
* Remove PHINode::reserveOperandSpace(). Instead, add a parameter toJay Foad2011-03-301-2/+1
| | | | | | PHINode::Create() giving the (known or expected) number of operands. llvm-svn: 128538
* When we adjust the inline ASM type, we need to take into account an earlyBill Wendling2011-03-071-1/+1
| | | | | | | | clobber with the 'y' constraint. Otherwise, we get the wrong return type and an assert, because it created a '<1 x i64>' vector type instead of the x86_mmx type. llvm-svn: 127185
* Revert "Add CC_Win64ThisCall and set it in the necessary places."Tilmann Scheller2011-03-021-20/+0
| | | | | | This reverts commit 126863. llvm-svn: 126886
* Add CC_Win64ThisCall and set it in the necessary places.Tilmann Scheller2011-03-021-0/+20
| | | | llvm-svn: 126863
* lib/CodeGen/TargetInfo.cpp: On Win64, arg i128 should be emitted as INDIRECT.NAKAMURA Takumi2011-02-221-2/+9
| | | | | | mingw-w64's i128 tweak should be done with x86_64-mingw32. llvm-svn: 126186
* Re-instate r125819 and r125820 with no functionality changePeter Collingbourne2011-02-191-0/+22
| | | | llvm-svn: 126060
* Revert 125820 and 125819 to fix PR9266.Rafael Espindola2011-02-191-22/+0
| | | | llvm-svn: 126050
OpenPOWER on IntegriCloud