summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/TargetInfo.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* PTX: Set proper calling conventions for PTX in OpenCL mode.Justin Holewinski2011-10-051-5/+40
| | | | llvm-svn: 141193
* Removing a bunch of dead returns/breaks after llvm_unreachables.David Blaikie2011-09-231-1/+0
| | | | llvm-svn: 140407
* Switch assert(0/false) llvm_unreachable.David Blaikie2011-09-231-4/+4
| | | | llvm-svn: 140367
* ANSI C requires that a call to an unprototyped function type succeedJohn McCall2011-09-211-0/+17
| | | | | | | | | | | | | | | | | if the definition has a non-variadic prototype with compatible parameters. Therefore, the default rule for such calls must be to use a non-variadic convention. Achieve this by casting the callee to the function type with which it is required to be compatible, unless the target specifically opts out and insists that unprototyped calls should use the variadic rules. The only case of that I'm aware of is the x86-64 convention, which passes arguments the same way in both cases but also sets a small amount of extra information; here we seek to maintain compatibility with GCC, which does set this when calling an unprototyped function. Addresses PR10810 and PR10713. llvm-svn: 140241
* Create a MipsTargetCodeGenInfo object for mips64/mips64el. The size of theAkira Hatanaka2011-09-201-0/+4
| | | | | | UnwindException structure is 32 for mips64. llvm-svn: 140165
* Add a parameter to MipsTargetCodeGenInfo's constructor.Akira Hatanaka2011-09-201-4/+5
| | | | llvm-svn: 140161
* Extend the ASTContext constructor to delay the initialization ofDouglas Gregor2011-09-021-7/+7
| | | | | | | | builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, rather than doing so after the fact. No actual functionality change (yet). llvm-svn: 138985
* The size of struct UnwindException varies by platform with noJohn McCall2011-08-301-2/+30
| | | | | | | apparent general rule. Just special-case it as appropriate. PR10789. llvm-svn: 138792
* Alignment of a va_arg must be at least as large as the ABI's minimum alignment.Akira Hatanaka2011-08-121-0/+1
| | | | llvm-svn: 137420
OpenPOWER on IntegriCloud