[LLVMdev] promotion of return value.
Rafael Espindola
espindola at google.com
Thu Mar 12 11:25:14 PDT 2009
>> 4) There will be 4 new function attributes:
>> sign_ext_from_i8, sign_ext_from_i16
>> zero_ext_from_i8, zero_ext_from_i16
>> These attributes will be placed on the function CALL node by
>> front-end
>> to inform the backend about such promotions and enable optimization
>> of
>> return value. This should be sufficient for direct and indirect
>> call.
>> (syntax of these attributes to be defined)
>
I am a bit lost, but if we are going to do what gcc does (only extent
in the caller) I don't thin we need this. We can compile
char foo() {
char c = ...
return c;
}
into
define i8 @foo() {
...
%tmp = ....
ret i8 %tmp
}
and if a caller wants a 32 bit value it can extend it according to the
c/c++ prototype of the function.
In theory I think we could also do this for passing arguments to
functions, but I am not sure how this would
interact with existing code compiled with gcc.
Cheers,
--
Rafael Avila de Espindola
Google | Gordon House | Barrow Street | Dublin 4 | Ireland
Registered in Dublin, Ireland | Registration Number: 368047
More information about the llvm-dev
mailing list