The current logic determining whether to use .machine in the generated asm code puts it there if the compiler is not configured with a default target cpu, _or_ no -mcpu= was given on the command line. It should be "and" instead.
Tested on powerpc64-linux (-m32 as well). Also tested manually with the testcase in the PR (not included in the patch, it depends on your GCC configuration). Is this okay for trunk? And backports later? Segher 2016-07-22 Segher Boessenkool <seg...@kernel.crashing.org> * config/rs6000/rs6000.c (rs6000_file_start): Fix condition for when to emit a ".machine" pseudo-op. --- gcc/config/rs6000/rs6000.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6fe94d5..7d47f45 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -5794,8 +5794,8 @@ rs6000_file_start (void) } #ifdef USING_ELFOS_H - if (rs6000_default_cpu == 0 || rs6000_default_cpu[0] == '\0' - || !global_options_set.x_rs6000_cpu_index) + if (!(rs6000_default_cpu && rs6000_default_cpu[0]) + && !global_options_set.x_rs6000_cpu_index) { fputs ("\t.machine ", asm_out_file); if ((rs6000_isa_flags & OPTION_MASK_MODULO) != 0) -- 1.9.3