[LLVMdev] c char translated to i8 signext

Chris Lattner sabre at nondot.org
Wed Apr 30 16:10:01 PDT 2008


On Wed, 30 Apr 2008, Ryan M. Lefever wrote:
> 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?

Update to llvm 2.2 or mainline, there the attributes are on the function 
and call for precisely that reason.

-Chris


> 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
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/



More information about the llvm-dev mailing list