http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59086
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Alexander Ivchenko from comment #5) > I understand the technical reasons of the complexity of the correct and > efficient register allocation here, but what I don't understand is this: > > $> gcc_4.7 test.c -c -fPIC -mstackrealign -march=core-avx2 -m32 > $> gcc_4.8 test.c -c -fPIC -mstackrealign -march=core-avx2 -m32 > $> gcc_4.9 test.c -c -fPIC -mstackrealign -march=core-avx2 -m32 > test.c: In function 'testFunc': > test.c:7:3: error: 'asm' operand has impossible constraints > __asm__( > ^ > > How can we allow to break the user code with the release version of the > compiler here..? If it does something wrong, and using almost all or all available registers in an asm is always wrong, then why not. Just compile it with -maccumulate-outgoing-args or without -mstackrealign or better rework either to need fewer registers (pass some more arguments in memory or even better some memory structure, so that they can all be loaded/saved from there using fewer registers). I'd say this should be closed NOTABUG (or WONTFIX?).