https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111922
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Andrew Macleod from comment #7) > Alternatively, if IPA could figure out when things need promoting.. GCC > must already do it, although I suppose thats in the front ends :-P Well, in this case the user explicitly told compiler not to do that by not using a prototype and syntax which doesn't provide one from the definition. It is like using int f1 (struct C *x, struct A *y) { ... } definition in one TU, and int f1 (int, int); prototype and f1 (0, ~x) call in another one + using LTO. What I meant is how to do decide if the param_type vs. operand_type mismatch is ok or not.