[Bug tree-optimization/93667] [10 regression] ICE in esra with nested [[no_unique_address]] field

2020-02-19 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93667

Martin Jambor  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #8 from Martin Jambor  ---
Fixed.

[Bug tree-optimization/93667] [10 regression] ICE in esra with nested [[no_unique_address]] field

2020-02-19 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93667

--- Comment #7 from CVS Commits  ---
The master branch has been updated by Martin Jambor :

https://gcc.gnu.org/g:665c5bad168ab63629b29ed2ce08ed042c088dc2

commit r10-6722-g665c5bad168ab63629b29ed2ce08ed042c088dc2
Author: Martin Jambor 
Date:   Wed Feb 19 11:08:40 2020 +0100

sra: Avoid totally scalarizing overallping field_decls (PR 93667)

[[no_unique_address]] C++ attribute can cause two fields of a
RECORD_TYPE overlap, which currently confuses the totally scalarizing
code into creating invalid access tree.  For GCC 10, I'd like to
simply disable total scalarization of types where this happens.

For GCC 11 I'll write down a TODO item to enable total scalarization
of cases like this where the problematic fields are basically empty -
despite having a non-zero size - i.e. when they are just RECORD_TYPEs
without any data fields.

2020-02-19  Martin Jambor  

gcc/

PR tree-optimization/93667
* tree-sra.c (scalarizable_type_p): Return false if record fields
do not follow wach other.

gcc/testsuite/

PR tree-optimization/93667
* g++.dg/tree-ssa/pr93667.C: New test.

[Bug tree-optimization/93667] [10 regression] ICE in esra with nested [[no_unique_address]] field

2020-02-18 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93667

--- Comment #6 from Martin Jambor  ---
I proposed a fix on the mailing list: 

https://gcc.gnu.org/ml/gcc-patches/2020-02/msg01053.html