[PATCH] Fix ICE in modified_type_die (PR debug/80461)

Jeff Law law@redhat.com
Wed Apr 19 16:49:00 GMT 2017


On 04/19/2017 10:13 AM, Jakub Jelinek wrote:
> On Wed, Apr 19, 2017 at 09:55:19AM -0600, Jeff Law wrote:
>> On 04/19/2017 09:10 AM, Jakub Jelinek wrote:
>>> On Wed, Apr 19, 2017 at 08:57:52AM -0600, Jeff Law wrote:
>>>>> 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
>>>>>
>>>>> 	PR debug/80461
>>>>> 	* dwarf2out.c (modified_type_die, gen_type_die_with_usage):
>>>>> 	Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
>>>>>
>>>>> 	* g++.dg/debug/pr80461.C: New test.
>>>> I'm going to assume your use of TYPE_QUALS_NO_ADDR_SPACE vs TYPE_QUALS or
>>>> TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC is correct.
>>>
>>> I don't really know.  For address space quals I think one would need to have
>>> pointer-to-members in different code address spaces, not sure if we support
>>> anything like that.  And atomic is C only which doesn't have
>>> pointer-to-members.
>> To put it another way, in your message you indicated that modified_type_die
>> expects either an unqualified type or the type itself and that your patch
>> makes sure we only pick unqualified types.
>>
>> Using TYPE_QUALS_NO_ADDR_SPACE like you have seems to conflict with those
>> statements.  So I'm curious why you allow address space qualifiers to pass
>> through, but no others.   It just seems odd.
> 
> I used TYPE_QUALS_NO_ADDR_SPACE because that seems to be used in
> modified_type_die elsewhere (dwarf2out.c has only one use of TYPE_QUALS and
> even that one ignores addr space bits, as it is masked with qual_mask;
> the rest just TYPE_QUALS_NO_ADDR_SPACE).  I think with FUNCTION/METHOD types
> with addr space quals we end up in grossly untested territory that most
> likely will just not work at all.  I think we don't do anything with the
> address space quals right now, in the future DWARF has segment identifiers
> and something like that could be emitted, but there needs to be ABI
> agreement on what it means.
OK.  So let's go with your patch -- my reading of modified_type_die was 
that it would ignore address-space qualifiers.  So I think your patch is 
safe, it was the inconsistency in the message and the patch itself I was 
most concerned about.

jeff



More information about the Gcc-patches mailing list