[PATCH] D41633: [InstCombine] Remove unneeded VarArg casts.

John McCall via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 2 13:00:20 PST 2018


rjmccall added a comment.

I think at least one of the MIPS ABIs does the same thing with varargs as AArch64 on Darwin.

Eli is right, the type of a function declaration is totally irrelevant under current IR semantics.  The only thing that contributes to the CC of a call is the combination of (1) the type of the callee value, (2) the named calling convention, and (3) the attributes on the call site.  I can declare malloc as taking three floats and returning void, and as long as I cast it to i8* (i64)* at every call site, everything should work.  If you can prove that you have the dynamic definition of the callee, you can apply UB rules, but you don't have that here — you don't have a definition at all.


https://reviews.llvm.org/D41633





More information about the llvm-commits mailing list