Re: Regression of GCC >= 4.8.5 for 32-bit powerpc
Matt Thomas <[email protected]> Tue, 13 Dec 2016 11:07:37 -0800
| Newsgroups | gmane.os.netbsd.ports.powerpc,gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
> On Dec 11, 2016, at 12:26 PM, Rin Okuyama <[email protected]> wrote: > > Hi, thank you for your prompt response! > > On 2016/12/11 14:34, Matt Thomas wrote: >>> On Dec 10, 2016, at 9:44 AM, Rin Okuyama <[email protected]> wrote: >>> >>> GCC >= 4.8.5 passes ".machine ppc" pseudo-op to assembler for 32-bit >>> powerpc: >>> >>> @@ -5199,10 +5204,8 @@ >>> fputs ("power5\n", asm_out_file); >>> else if ((rs6000_isa_flags & OPTION_MASK_MFCRF) != 0) >>> fputs ("power4\n", asm_out_file); >>> - else if ((rs6000_isa_flags & OPTION_MASK_POWERPC64) != 0) >>> - fputs ("ppc64\n", asm_out_file); >>> else >>> - fputs ("ppc\n", asm_out_file); >>> + fputs ("ppc64\n", asm_out_file); >>> } >>> #endif >>> ==== >>> Could I commit this patch? Any comments or suggestions? >> >> Is that fragment needed? It doesn't seem to matter if you emit -mcpu= >> so why change it? > > Yes, it is needed. ".machine ppc" pseudo-op overrides CPU type > specified by -mcpu=XXX option. As a result, even if we emit > -mcpu=XXX, gas assembles mnemonics into instructions for generic > powerpc. > > Actually, Makefile for IBM 405 specifies -mcpu=405: > > src/sys/arch/evbppc/conf/Makefile.obs405.inc > 3 CFLAGS+=-mcpu=405 > 4 AFLAGS+=-mcpu=405 > > But it is neglected by assembler for the above reason. To avoid > this, we need to stop GCC emitting ".machine ppc" pseudo-op. I think the right fix is to make that last else fputs ("ppc\n", asm_out_file); into else if (!global_options_set.x_rs6000_cpu_index) fputs ("ppc\n", asm_out_file); I think that's that is needed.