on 2022/9/30 01:11, Segher Boessenkool wrote:
> 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.

Agree, the diff was mainly to check if it's the root cause.  I think we
need to place TARGET_POWERPC64 enablement for 64 bit before this hunk,
I've adjusted it in the new version, will post it once it's full tested.

> 
>> +#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.
> 

OK, with more testings for replacing warning instead of silently disablement
I noticed that some disablement is needed, one typical case is -m32 compilation
on ppc64, we have OPTION_MASK_POWERPC64 on from TARGET_DEFAULT which is used
for initialization (It makes sense to have it on in TARGET_DEFAULT because
of it's 64 bit cpu).  And -m32 compilation matches OS_MISSING_POWERPC64
(!TARGET_64BIT), so it's the case that we have an implicit OPTION_MASK_POWERPC64
on and OS_MISSING_POWERPC64 holds, but it's unexpected not to disable it but
warn it.

BR,
Kewen

> If things are done well, we will end up with *less* code than what we
> had before, not more!
> 
> 
> Segher

Reply via email to