summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCall.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Pull CodeGenFunction::GetUndefRValue() out of EmitUnsupportedRValue.Daniel Dunbar2009-02-051-9/+3
| | | | llvm-svn: 63845
* x86-32: Use Ignore to avoid passing empty structs (instead of Expand).Daniel Dunbar2009-02-051-2/+2
| | | | llvm-svn: 63813
* Honor ByVal alignment. Patch by Nate Begeman!Daniel Dunbar2009-02-051-2/+3
| | | | llvm-svn: 63811
* Unbreak CGFunctionInfo::Profile method and reenable caching of ABIDaniel Dunbar2009-02-051-3/+1
| | | | | | information. llvm-svn: 63799
* Add ABIArgInfo::dump()Daniel Dunbar2009-02-041-0/+31
| | | | llvm-svn: 63794
* Temporarily disable caching of ABI results; this is going horriblyDaniel Dunbar2009-02-041-1/+3
| | | | | | wrong in some cases. llvm-svn: 63780
* Add asserts that the function signature matches the other arguments provideDaniel Dunbar2009-02-041-0/+4
| | | | | | to CGCall functions. llvm-svn: 63775
* Handle demotion of coerced arguments (as in void a(x) short x; { ... }).Daniel Dunbar2009-02-041-1/+7
| | | | llvm-svn: 63726
* Use ConvertTypeForMem when creating alloca for scalar argument.Daniel Dunbar2009-02-031-1/+1
| | | | llvm-svn: 63681
* x86_64 ABI: Initial implementation of ABI compliant parameter passing.Daniel Dunbar2009-02-031-18/+119
| | | | | | | | | | | - Now only 27/500 failures on ABITest single argument tests; from 350/500. :) - As with return types, a large percentage of these are likely to be gcc bugs, not yet reviewed. Also, fix bug in handling of Ignore ABI type in argument lists. llvm-svn: 63654
* ABI handling: Implement coercion for argument types (in addition toDaniel Dunbar2009-02-031-4/+39
| | | | | | return types). llvm-svn: 63645
* Change ABIInfo to compute information for a full signature at a timeDaniel Dunbar2009-02-031-41/+38
| | | | | | (the main point of this restructing). llvm-svn: 63619
* Remove ABIArgInfo::Default kind, ABI is now responsible for specifyingDaniel Dunbar2009-02-031-33/+28
| | | | | | acceptable kind with more precise semantics. llvm-svn: 63617
* Add ABIArgInfo::Direct kind, which passes arguments using whatever theDaniel Dunbar2009-02-031-1/+18
| | | | | | | native IRgen type is. This is like Default, but without any extra semantics (like automatic tweaking of structures or void). llvm-svn: 63615
* Add two FIXMEs.Daniel Dunbar2009-02-031-0/+5
| | | | llvm-svn: 63613
* Always use CGFunctionInfo to access ABI information.Daniel Dunbar2009-02-031-14/+16
| | | | llvm-svn: 63612
* Move ABIArgInfo into CGFunctionInfo, computed on creation.Daniel Dunbar2009-02-031-25/+31
| | | | | | - Still have to convert some consumers over. llvm-svn: 63610
* Move ABIInfo/ABIArgInfo classes into ABIInfo.hDaniel Dunbar2009-02-031-103/+3
| | | | llvm-svn: 63586
* Memoize CGFunctionInfo construction.Daniel Dunbar2009-02-031-1/+12
| | | | llvm-svn: 63576
* Change CGFunctionInfo args iterator to not include the return type.Daniel Dunbar2009-02-021-14/+14
| | | | llvm-svn: 63571
* Thread CGFunctionInfo construction through CodeGenTypes.Daniel Dunbar2009-02-021-26/+46
| | | | | | - Inefficient & leaks memory currently, will be cleaned up subsequently. llvm-svn: 63567
* More ABI API cleanup.Daniel Dunbar2009-02-021-13/+12
| | | | | | | - Lift CGFunctionInfo creation above ReturnTypeUsesSret and EmitFunction{Epi,Pro}log. llvm-svn: 63553
* ABI handling API changes.Daniel Dunbar2009-02-021-29/+22
| | | | | | | | | | | - Lift CGFunctionInfo creation up to callers of EmitCall. - Move isVariadic bit out of CGFunctionInfo, take as argument to GetFunctionType instead. No functionality change. llvm-svn: 63550
* Shuffle some functions around, no functionality change.Daniel Dunbar2009-02-021-65/+65
| | | | llvm-svn: 63538
* Add FIXME.Daniel Dunbar2009-02-021-0/+4
| | | | llvm-svn: 63531
* Remove unused overload of GetFunctionType.Daniel Dunbar2009-01-311-8/+2
| | | | llvm-svn: 63472
* Initialize CGFunctionInfo isVariadic bit correctly.Daniel Dunbar2009-01-311-2/+4
| | | | llvm-svn: 63471
* Err, unbreak my previous "no functionality change commit", will fix properly ↵Daniel Dunbar2009-01-311-1/+1
| | | | | | later. llvm-svn: 63467
* Kill off CGCallInfo, always use CGFunctionInfo for encapsulatingDaniel Dunbar2009-01-311-31/+20
| | | | | | function/call info. llvm-svn: 63466
* x86_64 ABI: Retool classification to compute lo & hi classificationsDaniel Dunbar2009-01-311-79/+86
| | | | | | | | in terms of where the type resides in the containing object. This is a more clear embodiement of the spec & fixes a merging issue with unions. Down to 3/1000 failures. llvm-svn: 63455
* x86_64 ABI: Fix more thinkos, straddling computation for complex wasDaniel Dunbar2009-01-301-6/+6
| | | | | | | computing in bytes not bits. We are now down to 22/1000 failures on the return types tests, and 18 of those are gcc bugs I believe. llvm-svn: 63438
* x86_64 ABI: Fix thinko in prev commit, 64-bit vectors should have SSEDaniel Dunbar2009-01-301-1/+1
| | | | | | class, not integer. llvm-svn: 63426
* x86_64 ABI: Pass <1 x double> in memory. This is arguably wrong, butDaniel Dunbar2009-01-301-4/+7
| | | | | | matches gcc 4.2 (not llvm-gcc). llvm-svn: 63413
* Remove testing -use-x86_64-abi option; current implementation isDaniel Dunbar2009-01-301-7/+1
| | | | | | robust enough for general use. llvm-svn: 63406
* x86_64 ABI: Split small vectors which cross an eightbyte boundary. Down to ↵Daniel Dunbar2009-01-301-2/+7
| | | | | | 33/500 return type failures. llvm-svn: 63404
* x86_64 ABI: Implement classification for arrays.Daniel Dunbar2009-01-301-55/+101
| | | | | | | - This brings us down to an 8% failure rate on the first 500 return types tests (from 12%). llvm-svn: 63383
* Use uint64_t not unsigned for type sizes/offsets.Daniel Dunbar2009-01-301-11/+11
| | | | llvm-svn: 63352
* x86_64 ABI: Handle fields / complex components which straddleDaniel Dunbar2009-01-291-4/+15
| | | | | | | | eightbyte boundaries. - Getting harder to test now that we handle cases gcc & llvm-gcc get wrong ( { _Complex char; _Complex int; } is a good example). :) llvm-svn: 63305
* x86_64 ABI: Tweak merging algorithm so that we always bail early whenDaniel Dunbar2009-01-291-2/+2
| | | | | | we see a Memory classification. llvm-svn: 63295
* ABI: When emitting calls which return an ignored argument, make sureDaniel Dunbar2009-01-291-1/+8
| | | | | | to still return an RValue of the correct type. llvm-svn: 63294
* x86_64 ABI: Implement classification for records.Daniel Dunbar2009-01-291-0/+103
| | | | | | | - This is my best initial guess at what the "spec" means, although it is not particularly clear on a number of points. Will refine through testing. llvm-svn: 63292
* x86_64: Support cases which map to returning multiple values in LLVMDaniel Dunbar2009-01-291-4/+5
| | | | | | (e.g., _Complex double -> { double, double } return). llvm-svn: 63285
* x86_64 ABI: Classify _Complex ints as integer.Daniel Dunbar2009-01-291-1/+7
| | | | llvm-svn: 63283
* x86_64: Classify __m64 and __m128 "correctly".Daniel Dunbar2009-01-271-2/+14
| | | | | | | - gcc appears to be classifying <1 x double> as INTEGER which is odd. Will investigate later. llvm-svn: 63086
* Implement support for coercion to wider types during ABI handling.Daniel Dunbar2009-01-271-7/+69
| | | | | | - Code quality is poor, but simple. llvm-svn: 63083
* Add Ignore ABIArgInfo kind, for handling void & empty structures.Daniel Dunbar2009-01-261-4/+40
| | | | llvm-svn: 63039
* Start filling in x86_64 ABI implementation.Daniel Dunbar2009-01-241-13/+159
| | | | | | | - No functionality change, moved behind -use-x86_64-abi option until it becomes non-experimental. llvm-svn: 62915
* Add dummy X86_64 ABIInfo implementation.Daniel Dunbar2009-01-151-5/+26
| | | | llvm-svn: 62268
* Provide a new kind of iterator, the specific_decl_iterator, thatDouglas Gregor2009-01-091-4/+4
| | | | | | | | | filters the decls seen by decl_iterator with two criteria: the dynamic type of the declaration and a run-time predicate described by a member function. This simplifies EnumDecl, RecordDecl, and ObjCContainerDecl considerably. It has no measurable performance impact. llvm-svn: 61994
* Allow ABI to use StructRet even for scalar values.Daniel Dunbar2008-12-181-9/+17
| | | | | | | | | | - Update comment to reflect fact that StructRet is now supported for any type (modulo LLVM support). - No functionality change, no scalar types currently use this feature. llvm-svn: 61192
OpenPOWER on IntegriCloud