[LLVMdev] c char translated to i8 signext

Ryan M. Lefever lefever at crhc.uiuc.edu
Wed Apr 30 12:44:51 PDT 2008


It appears that the only thing that has parameter attributes is the 
function type.  However, you can't simply change a function's type 
without reconstructing the whole function, can you?  Also, am I correct 
that it would not be safe to remove the parameter attribute's from a 
FunctionType?

Ryan M. Lefever wrote:
> Thanks for your response.  When I attempt to get the parameter attribute 
> lists for the function and its call sites, the list is NULL.  Is there 
> someone else I should be looking to get the parameter attributes?
> 
> Chris Lattner wrote:
>> On Wed, 30 Apr 2008, Ryan M. Lefever wrote:
>>> I have a c function that takes a char as a parameter.  When it is
>>> compiled to bytecode, it gets translated to i8 signext.  Why is signext
>>> getting added to the type?  It doesn't get added if the parameter is an
>>> int.  Is there a way to alter the parameter in the c code so that it
>>> simply gets translated to an i8, or is there a way in LLVM to modify the
>>> parameter's type?
>> This is an ABI requirement for your target.  You can remove it from the 
>> llvm ir by removing the parameter attribute from the function and calls to 
>> it.
>>
>> -Chris
>>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list