summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/TargetInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Coerce byval aggregate arguments to integers whose size matches the integerAkira Hatanaka2012-05-111-35/+44
| | | | | | | register size of the target architecture. llvm-svn: 156650
* Fix handling of vector return types.Akira Hatanaka2012-05-111-1/+1
| | | | | | | A vector should be returned via the hidden pointer argument except if its size is equal to or smaller than 16-bytes and the target ABI is N32 or N64. llvm-svn: 156642
* Implement PPC64TargetCodeGenInfo.Roman Divacky2012-05-091-0/+60
| | | | llvm-svn: 156491
* Remove the ref/value inconsistency in filter_decl_iterator.David Blaikie2012-04-301-9/+9
| | | | | | | | | | | | | filter_decl_iterator had a weird mismatch where both op* and op-> returned T* making it difficult to generalize this filtering behavior into a reusable library of any kind. This change errs on the side of value, making op-> return T* and op* return T&. (reviewed by Richard Smith) llvm-svn: 155808
* Step forward with supporting of ARM homogenous aggregates:Anton Korobeynikov2012-04-131-10/+14
| | | | | | | - Handle unions - Handle C++ classes llvm-svn: 154664
* Unify naming of LangOptions variable/get function across the Clang stack ↵David Blaikie2012-03-111-4/+4
| | | | | | | | | | (Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner llvm-svn: 152536
* IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes.Daniel Dunbar2012-03-101-9/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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? llvm-svn: 152462
* Adding support for Microsoft's thiscall calling convention. Clang side of ↵Aaron Ballman2012-02-221-9/+23
| | | | | | the patch. llvm-svn: 151122
* Whether an argument is required (in contrast with being anJohn McCall2012-02-171-16/+27
| | | | | | | | | | | | | | | | | | | | | optional argument passed through the variadic ellipsis) potentially affects how we need to lower it. Propagate this information down to the various getFunctionInfo(...) overloads on CodeGenTypes. Furthermore, rename those overloads to clarify their distinct purposes, and make sure we're calling the right one in the right place. This has a nice side-effect of making it easier to construct a function type, since the 'variadic' bit is no longer separable. This shouldn't really change anything for our existing platforms, with one minor exception --- we should now call variadic ObjC methods with the ... in the "right place" (see the test case), which I guess matters for anyone running GNUStep on MIPS. Mostly it's just a substantial clean-up. llvm-svn: 150788
* Class objects passed by value follow the same rules as structure objects.Akira Hatanaka2012-02-091-3/+6
| | | | | | | Double fields of by-value class objects should be passed in floating point registers. llvm-svn: 150200
* Fix bugs in function MipsABIInfo::returnAggregateInRegs. Functions returningAkira Hatanaka2012-02-091-14/+27
| | | | | | class objects follow the same rules as those returning struct objects. llvm-svn: 150196
* Do not return records with non trivial destructors or copy constructors inAkira Hatanaka2012-02-081-1/+1
| | | | | | registers. llvm-svn: 150035
* simplify a bunch of code to use the well-known LLVM IR types computed by ↵Chris Lattner2012-02-071-67/+31
| | | | | | CodeGenModule. llvm-svn: 149943
* Add some ABI tweaks for i386-pc-win32 triple so that we return structs in an ↵Eli Friedman2012-01-251-14/+28
| | | | | | MSVC-compatible way. Patch by Joe Groff. llvm-svn: 148992
* Make sure the integer type used to align the vaarg address is the same as theAkira Hatanaka2012-01-231-7/+9
| | | | | | type of pointers. llvm-svn: 148753
* Ignore return type if its size is zero.Akira Hatanaka2012-01-231-2/+3
| | | | llvm-svn: 148744
* More dead code removal (using -Wunreachable-code)David Blaikie2012-01-201-1/+0
| | | | llvm-svn: 148577
* Take into account the pointer to an aggregate that is passed as a hiddenAkira Hatanaka2012-01-121-2/+6
| | | | | | argument when Offset is initialized. llvm-svn: 147986
* Call CodeGenTypes::ConvertType to get LLVM::Type*.Akira Hatanaka2012-01-121-25/+4
| | | | | | Remove function MipsABIInfo::GetFloatingPointTy. llvm-svn: 147985
* Remove switch/case statements and call GetFloatingPointTy() instead to get theAkira Hatanaka2012-01-101-13/+1
| | | | | | floating point type. llvm-svn: 147894
* Flatten float complex arguments. N32/64 requires float complex arguments beAkira Hatanaka2012-01-101-4/+28
| | | | | | passed in floating point registers. llvm-svn: 147892
* Remove space.Akira Hatanaka2012-01-101-2/+2
| | | | llvm-svn: 147889
* Add support for the androideabi environment to our triple support, andChandler Carruth2012-01-101-1/+1
| | | | | | | | | | for the arm-linux-androideabi triple in particular. Also use this to do a better job of selecting soft FP settings. Patch by Evgeniy Stepanov. llvm-svn: 147872
* Contrary to the other BSDs, NetBSD followed the ELF ABI for structureJoerg Sonnenberger2012-01-101-1/+0
| | | | | | passing on i386 and does not use registers. llvm-svn: 147856
* Insert padding before unaligned long double arguments.Akira Hatanaka2012-01-091-13/+28
| | | | llvm-svn: 147791
* Add field PaddingType to ABIArgInfo which specifies the type of padding thatAkira Hatanaka2012-01-071-10/+24
| | | | | | | | is inserted before the real argument. Padding is needed to ensure the backend reads from or writes to the correct argument slots when the original alignment of a byval structure is unavailable due to flattening. llvm-svn: 147699
* Have functions return structures smaller than 128-bit in registers if ABIAkira Hatanaka2012-01-041-3/+54
| | | | | | is either N32 or N64. llvm-svn: 147520
* Hexagon backend supportTony Linthicum2011-12-121-0/+144
| | | | llvm-svn: 146413
* Minor comment update.Eli Friedman2011-12-061-1/+3
| | | | llvm-svn: 145905
* When we're passing a vector with an illegal type through memory on x86-64, ↵Eli Friedman2011-12-021-7/+27
| | | | | | 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
* Don't use a varargs convention for calls unprototyped functions where one of ↵Eli Friedman2011-12-011-5/+24
| | | | | | the arguments is an AVX vector. llvm-svn: 145574
* Correct the code generation for function arguments of vec3 types on x86_64 ↵Tanya Lattner2011-11-281-1/+1
| | | | | | | | when they are greater than 128 bits. This was incorrectly coercing things like long3 into a double2. Add test case. llvm-svn: 145312
* Finish r144971, which was an incomplete commit.Eli Friedman2011-11-181-1/+1
| | | | llvm-svn: 144972
* Fix the meaning of an "empty" record for the case of a zero-length array. ↵Eli Friedman2011-11-181-3/+7
| | | | | | Use isEmptyRecord for arguments on x86-32; there are structs of size 0 which don't count as empty. llvm-svn: 144971
* Make va_arg on x86-64 compute alignment the same way as argument passing.Eli Friedman2011-11-181-7/+5
| | | | | | Fixes <rdar://problem/10463281>. llvm-svn: 144966
* A bunch of fixes to argument passing and va_arg on Darwin x86-32 for ↵Eli Friedman2011-11-181-3/+21
| | | | | | structures containing an SSE vector. llvm-svn: 144963
* Don't try to expand struct arguments containing holes on x86-32. From gcc ↵Eli Friedman2011-11-181-0/+8
| | | | | | struct layout tests. llvm-svn: 144961
* Simplify code for returning a struct for Darwin x86-32 ABI. Use a better ↵Eli Friedman2011-11-181-41/+16
| | | | | | type for a function returning a struct containing only a pointer. Handle the edge case of a struct containing only a float or double plus some dead padding instead of asserting. llvm-svn: 144960
* Ignore empty unions in argument lowering on x86-32. From gcc struct layout ↵Eli Friedman2011-11-181-2/+2
| | | | | | tests. llvm-svn: 144944
* Use a single integer type for a sub-doubleword part of a byval structure.Akira Hatanaka2011-11-031-11/+4
| | | | llvm-svn: 143666
* Do not add "byval" attribute to records with non-trivial copy constructorsJan Wen Voung2011-11-031-1/+7
| | | | | | and destructors in the DefaultABIInfo. llvm-svn: 143601
* Set MinABIStackAlignInBytes to 8 if ABI is N32/64.Akira Hatanaka2011-11-031-4/+3
| | | | llvm-svn: 143597
* Convert the type of a structure passed by value if it has double precisionAkira Hatanaka2011-11-021-0/+71
| | | | | | fields in order to ease handling of such structures in backend. llvm-svn: 143596
* Return function results whose size is smaller than 128-bits in registers if ABIAkira Hatanaka2011-11-021-6/+9
| | | | | | is N32/64. llvm-svn: 143589
* Check for homogeneous aggregate return values with ARM's AAPCS-VFP ABI.Bob Wilson2011-11-021-0/+8
| | | | llvm-svn: 143530
* Remove the SystemZ backend.Dan Gohman2011-10-241-82/+0
| | | | llvm-svn: 142879
* TCE target: conversion of OpenCL reqd_work_group_size attr to metadataPeter Collingbourne2011-10-131-2/+73
| | | | | | Patch by Pekka Jääskeläinen! llvm-svn: 141865
* Constant expression evaluation refactoring:Richard Smith2011-10-101-2/+1
| | | | | | | | | | | - Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions, and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert behaviour. - Factor out evaluation of bitfield bit widths. - Fix a few places which would evaluate an expression twice: once to determine whether it is a constant expression, then again to get the value. llvm-svn: 141561
* Free 'TheTargetCodeGenInfo' in the class CodeGenModule. This looks like an ↵Ted Kremenek2011-10-081-3/+0
| | | | | | obvious memory leak that was reported from LLDB devs. The comment indicates the leak is deliberate, but I have no idea why this needs to be so. Please comment/revert if you know otherwise. llvm-svn: 141479
* CUDA: set proper calling conventions for PTXPeter Collingbourne2011-10-061-7/+13
| | | | llvm-svn: 141296
OpenPOWER on IntegriCloud