[clang] sign extension of parameters

My target is 64-bit only, it has no 32-bit operations other than LD/ST. Parameters need to be sign or zero extended. Where in clang does one indicate that for a target?


I believe it is done by calling ABIArgInfo::getExtend in the ABI handling in clang/lib/CodeGen/TargetInfo.cpp. This will add a signext or zeroext attribute to the argument in IR. The backend can use this to insert the appropriate extend.


Oh my! I had thought that all the target-dependent code was under
lib/Basic/Targets/. Looks like I have more work to do. Is there other target-dependent code hiding elsewhere in the tree?

Thanks for the prompt reply,

I believe there’s other target specific code hiding in clang/lib/Driver/ToolChains/Clang.cpp. Maybe other files in that directory too.