Test program: /************************/ void f() { asm volatile("veor d8, d8, d8" : : :"d8","d9","d10","d11","d14","d15"); } /************************/
$ gcc -c -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O2 test.c $ objdump -d test.o 00000000 <f>: 0: ed2d8b08 vpush {d8-d11} 4: ed2deb04 vpush {d14-d15} 8: f3088118 veor d8, d8, d8 c: ecbd8b08 vpop {d8-d11} 10: ecbdeb04 vpop {d14-d15} 14: e12fff1e bx lr The order of the last two vpop instructions is messed up. -- Summary: NEON/VFP registers from inline assembly clobber list are saved/restored incorrectly Product: gcc Version: 4.4.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: inline-asm AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: siarhei dot siamashka at gmail dot com GCC build triplet: armv4tl-softfloat-linux-gnueabi GCC host triplet: armv4tl-softfloat-linux-gnueabi GCC target triplet: armv4tl-softfloat-linux-gnueabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42321