summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCall.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* x86_64 ABI: Implement classification for bit-fields.Daniel Dunbar2009-02-171-2/+26
| | | | llvm-svn: 64727
* x86_64 ABI: Handle va_arg arguments with alignment > 8.Daniel Dunbar2009-02-161-4/+15
| | | | llvm-svn: 64701
* x86_64 ABI: Need to use canonical types when comparing againstDaniel Dunbar2009-02-141-2/+6
| | | | | | ASTContext types. llvm-svn: 64533
* x86_64 ABI: Pass simple types directly when possible. This isDaniel Dunbar2009-02-141-2/+32
| | | | | | | important for both keeping the generated LLVM simple and for ensuring that integer types are passed/promoted correctly. llvm-svn: 64529
* x86_64 ABI: Support va_arg passed in mixed registers.Daniel Dunbar2009-02-131-1/+22
| | | | | | - Now at 1274 passes on gcc compat suite vs 1262. llvm-svn: 64469
* x86_64: Initial varargs support.Daniel Dunbar2009-02-121-1/+153
| | | | | | | | | | | | | | | | | | | | | | | | | - Doesn't yet handle case where values are passed in mixed (general purpose & floating point) registers; otherwise largely functional. Code still needs some cleaning. Fixes: MultiSource/Applications/lua/lua MultiSource/Applications/siod/siod MultiSource/Applications/sqlite3/sqlite3 SingleSource/Regression/C/PR640 SingleSource/UnitTests/2003-07-09-SignedArgs SingleSource/UnitTests/2007-03-02-VaCopy gcc compat test suite results (Darwin x86-32 & -64): -- # of expected passes 1262 # of unexpected failures 56 # of unresolved testcases 34 # of unsupported tests 2 Compare to: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090209/012050.html llvm-svn: 64370
* Pull CodeGenFunction::EmitVAArg into target specific ABIInfo classes.Daniel Dunbar2009-02-101-3/+55
| | | | llvm-svn: 64235
* Tweak x86-64 ABI to allow reuse for vararg handling.Daniel Dunbar2009-02-101-22/+26
| | | | llvm-svn: 64221
* ABI: Correctly handle load/store of values which have a different LLVMDaniel Dunbar2009-02-101-21/+22
| | | | | | | | | memory representation (e.g., bool). - This upgrades (downgrades) MultiSource/Applications/ClamAV/clamscan to a miscompile and fixes SingleSource/UnitTests/2003-05-31-CastToBool. llvm-svn: 64194
* Make sure to initialize local variables, even if they were ignored byDaniel Dunbar2009-02-101-0/+7
| | | | | | ABI. llvm-svn: 64187
* Set load/store alignment when doing ABI coercions.Daniel Dunbar2009-02-071-4/+14
| | | | | | | | | | | | - Currently, this is producing poor code, but we prefer correctness to performance for now. Eventually we should be able to generally avoid having to set the alignment when we control the alignment of the alloca. - This knocks out 33/1000 failures on my single argument ABI tests, down to 22/1000 and 18 of these appear to be gcc bugs. Woot. llvm-svn: 64001
* Implement Direct ABIInfo semantics.Daniel Dunbar2009-02-051-17/+29
| | | | | | | | - No intended functionality change, this is essentially enabling direct passing of complex and aggregate values, which no ABI is using. llvm-svn: 63863
* Simplify test for whether we need an alloca to hold an indirect returnDaniel Dunbar2009-02-051-11/+1
| | | | | | | value. - No functionality change. llvm-svn: 63859
* Implement ABI Indirect sematics for arguments.Daniel Dunbar2009-02-051-6/+32
| | | | | | | | - No intended functionality change, all current ABI implementations were only using indirect for complex/aggregate types, which were being passed indirectly with the Direct ABIInfo kind. llvm-svn: 63858
* Merge ABIInfo StructRet/ByVal into Indirect. Daniel Dunbar2009-02-051-46/+30
| | | | | | - No (intended) functionality change, the semantic changes are to come. llvm-svn: 63850
* 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
OpenPOWER on IntegriCloud