[LLVMdev] [cfe-commits] [PATCH/RFC, PowerPC] Extend 32-bit function arguments / return values

Duncan Sands baldrick at free.fr
Tue Oct 23 00:13:37 PDT 2012


On 22/10/12 21:12, Rafael EspĂ­ndola wrote:
> On 22 October 2012 14:53, Chandler Carruth <chandlerc at google.com> wrote:
>> So, I'm not really sure if this is the right approach. I'd like some
>> folks from the LLVM side of things to chime in.
>>
>> In general, I'm not certain we want to continue growing our dependence
>> on the signext and zeroext attributes on return types, or whether we
>> want to do the extension in the frontend instead.
>>
>> Most of the targets in Clang currently eagerly zext or sext the return
>> value to make it conform to the ABI. You can look at some of the other
>> classify*Type methods in Clang for how.
>
> As far as I know the difference is enabling optimization. If we see a
>
> declare i8 zeroext @foo()
>
> the caller knows that the top bits of the return are 0. There was some
> discussion about just using the range metadata, but that is not
> available for arguments/returns at the moment.

Chris wrote some notes about this:
   http://www.nondot.org/sabre/LLVMNotes/ExtendedIntegerResults.txt
The plan seems sensible to me, but was blocked by not having a good
way of attaching the information to parameters and return values.
Hopefully Bill's attribute work means it is now possible.

Ciao, Duncan.



More information about the llvm-dev mailing list