From c83faba13da6d67e6784b3781419cd0605700daf Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Mon, 8 Jul 2019 23:14:33 +0200 Subject: [PATCH] rs6000: Ignore GFXOPT (and GPOPT) for choosing machine The function rs6000_machine_from_flags chooses what .machine string to used based on the rs6000_isa_flags flags. For that it checks for each ISA level if something for its ISA_*_MASKS is selected. This does not work for GFXOPT and GPOPT: these are set as flags in ISA_2_5_MASKS_SERVER, but they aren't actually new there, they just are not selected by default for older ISAs (they were optional). This patch makes OPTION_MASK_PPC_GFXOPT and OPTION_MASK_PPC_GPOPT not influence the .machine selection. * config/rs6000/rs6000.c (rs6000_machine_from_flags): Ignore OPTION_MASK_PPC_GFXOPT and OPTION_MASK_PPC_GPOPT for selecting the .machine string. From-SVN: r273246 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d86ec3f3463..db0cf7e0508 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-07-08 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_machine_from_flags): Ignore + OPTION_MASK_PPC_GFXOPT and OPTION_MASK_PPC_GPOPT for selecting the + .machine string. + 2019-07-08 Segher Boessenkool PR rtl-optimization/88233 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index f59f3a96237..bec3436ffc5 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -5547,22 +5547,26 @@ const char *rs6000_machine; const char * rs6000_machine_from_flags (void) { - if ((rs6000_isa_flags & (ISA_FUTURE_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) - != 0) + HOST_WIDE_INT flags = rs6000_isa_flags; + + /* Disable the flags that should never influence the .machine selection. */ + flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT); + + if ((flags & (ISA_FUTURE_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) != 0) return "future"; - if ((rs6000_isa_flags & (ISA_3_0_MASKS_SERVER & ~ISA_2_7_MASKS_SERVER)) != 0) + if ((flags & (ISA_3_0_MASKS_SERVER & ~ISA_2_7_MASKS_SERVER)) != 0) return "power9"; - if ((rs6000_isa_flags & (ISA_2_7_MASKS_SERVER & ~ISA_2_6_MASKS_SERVER)) != 0) + if ((flags & (ISA_2_7_MASKS_SERVER & ~ISA_2_6_MASKS_SERVER)) != 0) return "power8"; - if ((rs6000_isa_flags & (ISA_2_6_MASKS_SERVER & ~ISA_2_5_MASKS_SERVER)) != 0) + if ((flags & (ISA_2_6_MASKS_SERVER & ~ISA_2_5_MASKS_SERVER)) != 0) return "power7"; - if ((rs6000_isa_flags & (ISA_2_5_MASKS_SERVER & ~ISA_2_4_MASKS)) != 0) + if ((flags & (ISA_2_5_MASKS_SERVER & ~ISA_2_4_MASKS)) != 0) return "power6"; - if ((rs6000_isa_flags & (ISA_2_4_MASKS & ~ISA_2_1_MASKS)) != 0) + if ((flags & (ISA_2_4_MASKS & ~ISA_2_1_MASKS)) != 0) return "power5"; - if ((rs6000_isa_flags & ISA_2_1_MASKS) != 0) + if ((flags & ISA_2_1_MASKS) != 0) return "power4"; - if ((rs6000_isa_flags & OPTION_MASK_POWERPC64) != 0) + if ((flags & OPTION_MASK_POWERPC64) != 0) return "ppc64"; return "ppc"; } -- 2.30.2