https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64810
--- Comment #10 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Trying a hw watchpoint: (gdb) watch global_options.x_arm_float_abi shows this is never touched within test-empty.c.exe Invoking ./xgcc verbosely on an empty C file: $ ./xgcc -c -xc -v -B. -save-temps /dev/null I note that ./cc1 and ./as are being invoked with various pertinent "-m" options: ./cc1 -fpreprocessed null.i -quiet -dumpbase null -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -mtls-dialect=gnu -auxbase null -version -o null.s ./as -v -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5 -o null.o null.s (e.g. -mfloat-abi=hard etc) null.s looks like this: .arch armv7-a .eabi_attribute 28, 1 .fpu vfpv3-d16 .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 6 .eabi_attribute 34, 1 .eabi_attribute 18, 4 .arm .syntax divided .file "null" .ident "GCC: (GNU) 5.0.0 20150126 (experimental)" .section .note.GNU-stack,"",%progbits Under non-jit operation the driver seems to invoking cc1 with -m options based on configure-time settings, whereas within the jit, jit-playback.c builds an argv for toplev::main analogous to invoking cc1, but doesn't attempt to inject these additional -m options, hence we get a bogus .fpu attribute, and indeed, the other settings are likely to be bogus also.