[clang] [llvm] target ABI: improve call parameters extensions handling (PR #100757)

Jonas Paulsson via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 15 07:20:13 PDT 2024


================
@@ -1185,6 +1189,9 @@ Currently, only the following parameter attributes are defined:
     value should be sign-extended to the extent required by the target's
     ABI (which is usually 32-bits) by the caller (for a parameter) or
     the callee (for a return value).
+``noext`` This indicates to the code generator that the parameter or return
+    value has the high bits undefined, as for a struct in register, and
+    therefore does not need to be sign or zero extended.
----------------
JonPsson1 wrote:

> * That's incorrect. Some implementation defined behavior are subject to change, hence cannot be called an ABI. It just like we cannot assume UB code get the same result between different compilers or from version to version.
> * If other front end doesn't specific a calling convention, then it uses C calling convention. See my previous link.

Sorry, I don't follow - what part is incorrect according to you? The *target* ABI is independent of the implementation - it is how things are done on a specific platform. On some machines this type of extensions *must* be done, and this will not change. Other machines do not care about this at all. How could this become more clear in the LangRef.rst do you mean?


https://github.com/llvm/llvm-project/pull/100757


More information about the cfe-commits mailing list