Re: [C++/66270] another may_alias crash

2015-05-27 Thread Nathan Sidwell
On 05/26/15 15:00, Nathan Sidwell wrote: On 05/25/15 21:18, Jason Merrill wrote: Hmm, are you seeing a case where TYPE_CANONICAL (to_type) has the may_alias attribute? Yes. This occurs when the newly created TRCAA pointer is to a self-canonical type. The else if (TYPE_CANONICAL

Re: [C++/66270] another may_alias crash

2015-05-27 Thread Jason Merrill
On 05/26/2015 03:00 PM, Nathan Sidwell wrote: Ok, so IIUC a canonical pointer to a may_alias type should have TRCAA but a canonical can_alias_all pointer to a non-may_alias type should not have TRCAA? (i.e. one where CAN_ALIAS_ALL was passed true). Or are you saying that no canonical pointers

Re: [C++/66270] another may_alias crash

2015-05-27 Thread Nathan Sidwell
On 05/27/15 12:20, Jason Merrill wrote: On 05/26/2015 03:00 PM, Nathan Sidwell wrote: Ok, so IIUC a canonical pointer to a may_alias type should have TRCAA but a canonical can_alias_all pointer to a non-may_alias type should not have TRCAA? (i.e. one where CAN_ALIAS_ALL was passed true). Or are

Re: [C++/66270] another may_alias crash

2015-05-26 Thread Nathan Sidwell
On 05/25/15 21:18, Jason Merrill wrote: On 05/25/2015 04:55 PM, Nathan Sidwell wrote: else if (TYPE_CANONICAL (to_type) != to_type) TYPE_CANONICAL (t) = build_reference_type_for_mode (TYPE_CANONICAL (to_type), mode, false); But we're passing 'false' in

[C++/66270] another may_alias crash

2015-05-25 Thread Nathan Sidwell
This patch addresses 66270, another case where may_alias disrupted the canonical type system. We ICE as TYPE_CANONICALs differ, but comptypes think they are the same. There seems to be a bit of confusion as to whether pointers that differ only in TYPE_REF_CAN_ALIAS_ALL are the same canonical

Re: [C++/66270] another may_alias crash

2015-05-25 Thread Jason Merrill
On 05/25/2015 04:55 PM, Nathan Sidwell wrote: This patch addresses 66270, another case where may_alias disrupted the canonical type system. We ICE as TYPE_CANONICALs differ, but comptypes think they are the same. There seems to be a bit of confusion as to whether pointers that differ only in