https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77333
Martin Jambor <jamborm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target| |i686-w64-mingw32 Status|UNCONFIRMED |NEW Last reconfirmed| |2017-01-27 Host| |x86_64-linux Ever confirmed|0 |1 --- Comment #13 from Martin Jambor <jamborm at gcc dot gnu.org> --- So although I have not gone as far building my own cross-compiler and just used the gcc 6 based one from OpenSUSE, I managed to reproduce the issue myself and can confirm that just marking method SLPVectorizer::tryToVectorizeList with noclone attribute avoids the issue. But, from the logs I gather that the only reason why IPA-CP did that was to remove the unused this pointer. This makes me wonder whether this somehow could push its callers and the callee out of sync regarding what ABI they use for the call? Apart from that, I have no idea what else could be wrong. I have quickly skimmed through the diff of the gimple dumps of the function before and after cloning and did not see any meaningful difference (lot's of UIDs were different so something might have escaped me but since this confirmed my observations from the IPA-CP dump, I doubt it). One more thing, IPA-CP does this (clone to remove a parameter when there are no real constants coming from all callers) only since r231540 (i.e. gcc 6), so you should not really see the issue with gcc 5, at least not because of this.