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 >
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
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/