Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Pull CodeGenFunction::GetUndefRValue() out of EmitUnsupportedRValue. | Daniel Dunbar | 2009-02-05 | 1 | -9/+3 | |
| | | | | llvm-svn: 63845 | |||||
* | x86-32: Use Ignore to avoid passing empty structs (instead of Expand). | Daniel Dunbar | 2009-02-05 | 1 | -2/+2 | |
| | | | | llvm-svn: 63813 | |||||
* | Honor ByVal alignment. Patch by Nate Begeman! | Daniel Dunbar | 2009-02-05 | 1 | -2/+3 | |
| | | | | llvm-svn: 63811 | |||||
* | Unbreak CGFunctionInfo::Profile method and reenable caching of ABI | Daniel Dunbar | 2009-02-05 | 1 | -3/+1 | |
| | | | | | | information. llvm-svn: 63799 | |||||
* | Add ABIArgInfo::dump() | Daniel Dunbar | 2009-02-04 | 1 | -0/+31 | |
| | | | | llvm-svn: 63794 | |||||
* | Temporarily disable caching of ABI results; this is going horribly | Daniel Dunbar | 2009-02-04 | 1 | -1/+3 | |
| | | | | | | wrong in some cases. llvm-svn: 63780 | |||||
* | Add asserts that the function signature matches the other arguments provide | Daniel Dunbar | 2009-02-04 | 1 | -0/+4 | |
| | | | | | | to CGCall functions. llvm-svn: 63775 | |||||
* | Handle demotion of coerced arguments (as in void a(x) short x; { ... }). | Daniel Dunbar | 2009-02-04 | 1 | -1/+7 | |
| | | | | llvm-svn: 63726 | |||||
* | Use ConvertTypeForMem when creating alloca for scalar argument. | Daniel Dunbar | 2009-02-03 | 1 | -1/+1 | |
| | | | | llvm-svn: 63681 | |||||
* | x86_64 ABI: Initial implementation of ABI compliant parameter passing. | Daniel Dunbar | 2009-02-03 | 1 | -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 to | Daniel Dunbar | 2009-02-03 | 1 | -4/+39 | |
| | | | | | | return types). llvm-svn: 63645 | |||||
* | Change ABIInfo to compute information for a full signature at a time | Daniel Dunbar | 2009-02-03 | 1 | -41/+38 | |
| | | | | | | (the main point of this restructing). llvm-svn: 63619 | |||||
* | Remove ABIArgInfo::Default kind, ABI is now responsible for specifying | Daniel Dunbar | 2009-02-03 | 1 | -33/+28 | |
| | | | | | | acceptable kind with more precise semantics. llvm-svn: 63617 | |||||
* | Add ABIArgInfo::Direct kind, which passes arguments using whatever the | Daniel Dunbar | 2009-02-03 | 1 | -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 Dunbar | 2009-02-03 | 1 | -0/+5 | |
| | | | | llvm-svn: 63613 | |||||
* | Always use CGFunctionInfo to access ABI information. | Daniel Dunbar | 2009-02-03 | 1 | -14/+16 | |
| | | | | llvm-svn: 63612 | |||||
* | Move ABIArgInfo into CGFunctionInfo, computed on creation. | Daniel Dunbar | 2009-02-03 | 1 | -25/+31 | |
| | | | | | | - Still have to convert some consumers over. llvm-svn: 63610 | |||||
* | Move ABIInfo/ABIArgInfo classes into ABIInfo.h | Daniel Dunbar | 2009-02-03 | 1 | -103/+3 | |
| | | | | llvm-svn: 63586 | |||||
* | Memoize CGFunctionInfo construction. | Daniel Dunbar | 2009-02-03 | 1 | -1/+12 | |
| | | | | llvm-svn: 63576 | |||||
* | Change CGFunctionInfo args iterator to not include the return type. | Daniel Dunbar | 2009-02-02 | 1 | -14/+14 | |
| | | | | llvm-svn: 63571 | |||||
* | Thread CGFunctionInfo construction through CodeGenTypes. | Daniel Dunbar | 2009-02-02 | 1 | -26/+46 | |
| | | | | | | - Inefficient & leaks memory currently, will be cleaned up subsequently. llvm-svn: 63567 | |||||
* | More ABI API cleanup. | Daniel Dunbar | 2009-02-02 | 1 | -13/+12 | |
| | | | | | | | - Lift CGFunctionInfo creation above ReturnTypeUsesSret and EmitFunction{Epi,Pro}log. llvm-svn: 63553 | |||||
* | ABI handling API changes. | Daniel Dunbar | 2009-02-02 | 1 | -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 Dunbar | 2009-02-02 | 1 | -65/+65 | |
| | | | | llvm-svn: 63538 | |||||
* | Add FIXME. | Daniel Dunbar | 2009-02-02 | 1 | -0/+4 | |
| | | | | llvm-svn: 63531 | |||||
* | Remove unused overload of GetFunctionType. | Daniel Dunbar | 2009-01-31 | 1 | -8/+2 | |
| | | | | llvm-svn: 63472 | |||||
* | Initialize CGFunctionInfo isVariadic bit correctly. | Daniel Dunbar | 2009-01-31 | 1 | -2/+4 | |
| | | | | llvm-svn: 63471 | |||||
* | Err, unbreak my previous "no functionality change commit", will fix properly ↵ | Daniel Dunbar | 2009-01-31 | 1 | -1/+1 | |
| | | | | | | later. llvm-svn: 63467 | |||||
* | Kill off CGCallInfo, always use CGFunctionInfo for encapsulating | Daniel Dunbar | 2009-01-31 | 1 | -31/+20 | |
| | | | | | | function/call info. llvm-svn: 63466 | |||||
* | x86_64 ABI: Retool classification to compute lo & hi classifications | Daniel Dunbar | 2009-01-31 | 1 | -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 was | Daniel Dunbar | 2009-01-30 | 1 | -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 SSE | Daniel Dunbar | 2009-01-30 | 1 | -1/+1 | |
| | | | | | | class, not integer. llvm-svn: 63426 | |||||
* | x86_64 ABI: Pass <1 x double> in memory. This is arguably wrong, but | Daniel Dunbar | 2009-01-30 | 1 | -4/+7 | |
| | | | | | | matches gcc 4.2 (not llvm-gcc). llvm-svn: 63413 | |||||
* | Remove testing -use-x86_64-abi option; current implementation is | Daniel Dunbar | 2009-01-30 | 1 | -7/+1 | |
| | | | | | | robust enough for general use. llvm-svn: 63406 | |||||
* | x86_64 ABI: Split small vectors which cross an eightbyte boundary. Down to ↵ | Daniel Dunbar | 2009-01-30 | 1 | -2/+7 | |
| | | | | | | 33/500 return type failures. llvm-svn: 63404 | |||||
* | x86_64 ABI: Implement classification for arrays. | Daniel Dunbar | 2009-01-30 | 1 | -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 Dunbar | 2009-01-30 | 1 | -11/+11 | |
| | | | | llvm-svn: 63352 | |||||
* | x86_64 ABI: Handle fields / complex components which straddle | Daniel Dunbar | 2009-01-29 | 1 | -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 when | Daniel Dunbar | 2009-01-29 | 1 | -2/+2 | |
| | | | | | | we see a Memory classification. llvm-svn: 63295 | |||||
* | ABI: When emitting calls which return an ignored argument, make sure | Daniel Dunbar | 2009-01-29 | 1 | -1/+8 | |
| | | | | | | to still return an RValue of the correct type. llvm-svn: 63294 | |||||
* | x86_64 ABI: Implement classification for records. | Daniel Dunbar | 2009-01-29 | 1 | -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 LLVM | Daniel Dunbar | 2009-01-29 | 1 | -4/+5 | |
| | | | | | | (e.g., _Complex double -> { double, double } return). llvm-svn: 63285 | |||||
* | x86_64 ABI: Classify _Complex ints as integer. | Daniel Dunbar | 2009-01-29 | 1 | -1/+7 | |
| | | | | llvm-svn: 63283 | |||||
* | x86_64: Classify __m64 and __m128 "correctly". | Daniel Dunbar | 2009-01-27 | 1 | -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 Dunbar | 2009-01-27 | 1 | -7/+69 | |
| | | | | | | - Code quality is poor, but simple. llvm-svn: 63083 | |||||
* | Add Ignore ABIArgInfo kind, for handling void & empty structures. | Daniel Dunbar | 2009-01-26 | 1 | -4/+40 | |
| | | | | llvm-svn: 63039 | |||||
* | Start filling in x86_64 ABI implementation. | Daniel Dunbar | 2009-01-24 | 1 | -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 Dunbar | 2009-01-15 | 1 | -5/+26 | |
| | | | | llvm-svn: 62268 | |||||
* | Provide a new kind of iterator, the specific_decl_iterator, that | Douglas Gregor | 2009-01-09 | 1 | -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 Dunbar | 2008-12-18 | 1 | -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 |