Aaron Sawdey <acsaw...@linux.ibm.com> writes:
>> On Nov 20, 2020, at 4:57 AM, Aaron Sawdey via Gcc-patches 
>> <gcc-patches@gcc.gnu.org> wrote:
>> 
>> 
>>> On Nov 20, 2020, at 3:55 AM, Richard Sandiford <richard.sandif...@arm.com> 
>>> wrote:
>>> 
>>> acsawdey--- via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
>>>> @@ -16767,7 +16768,7 @@ loc_descriptor (rtx rtl, machine_mode mode,
>>>>      break;
>>>> 
>>>>    case CONST_INT:
>>>> -      if (mode != VOIDmode && mode != BLKmode)
>>>> +      if (mode != VOIDmode && mode != BLKmode && !OPAQUE_MODE_P (mode))
>>>>    {
>>>>      int_mode = as_a <scalar_int_mode> (mode);
>>>>      loc_result = address_of_int_loc_descriptor (GET_MODE_SIZE (int_mode),
>>> 
>>> I realise I'm asking this about something that already appears to handle
>>> BLKmode CONST_INTs (?!), but this is the one change in the patch I
>>> struggled with.  Why do we see a CONST_INT that allegedly has an
>>> opaque mode?  It feels like something has gone wrong further up the
>>> call chain.
>>> 
>>> This might still be the expedient fix for whatever is happening,
>>> but I think it deserves a comment at least.
>>> 
>>> The rest looks good to me FWIW.
>>> 
>>> Richard
>> 
>> I should look at this again — since I originally put that in, I switched the 
>> target
>> portion of what I’ve been doing to use an UNSPEC to remove all use of an
>> opaque mode const_int from the rtf. This may not be needed any more. 
>
> And as a final addendum — I was able to remove this and the problem I saw
> before did not come back, probably because UNSPEC is used to hide all
> constants so we never see any opaque type or mode constants, which is a
> good thing.

Great.  The patch is OK without that hunk and with the gen_type nit fixed.

Thanks,
Richard

Reply via email to