On Thu, Sep 29, 2022 at 01:45:16PM +0800, Kewen.Lin wrote: > I found this flag is mainly related to tune setting and spotted that we have > some code > for tune setting when no explicit cpu is given. > > ... > > else > { > size_t i; > enum processor_type tune_proc > = (TARGET_POWERPC64 ? PROCESSOR_DEFAULT64 : PROCESSOR_DEFAULT); > > tune_index = -1; > for (i = 0; i < ARRAY_SIZE (processor_target_table); i++) > if (processor_target_table[i].processor == tune_proc) > { > tune_index = i; > break; > } > }
Ah cool, that needs fixing yes. > --- a/gcc/config/rs6000/rs6000.cc > +++ b/gcc/config/rs6000/rs6000.cc > @@ -3702,7 +3702,7 @@ rs6000_option_override_internal (bool global_init_p) > else > { > /* PowerPC 64-bit LE requires at least ISA 2.07. */ > - const char *default_cpu = (!TARGET_POWERPC64 > + const char *default_cpu = (!TARGET_POWERPC64 && TARGET_32BIT > ? "powerpc" > : (BYTES_BIG_ENDIAN > ? "powerpc64" ... but not like that. If this snippet should happen later just move it later. Or introduce a new variable to make the control flow less confused. Or something else. But don't make the code more complex, introducing more special cases like this. > +#ifdef OS_MISSING_POWERPC64 > + else if (OS_MISSING_POWERPC64) > + /* It's unexpected to have OPTION_MASK_POWERPC64 on for OSes which > + miss powerpc64 support, so disable it. */ > + rs6000_isa_flags &= ~OPTION_MASK_POWERPC64; > +#endif All silent stuff is always bad. If things are done well, we will end up with *less* code than what we had before, not more! Segher