https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109521
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail|11.3.1, 12.2.1, 13.0 |11.1.0 Known to work|10.4.1 |10.4.0 Target Milestone|--- |11.4 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Keywords| |ice-checking, | |ice-on-valid-code, | |needs-bisection Summary|[11/12/13 regression] |[11/12/13 Regression] |Checking ICE with canonical |Checking ICE with canonical |types differ for identical |types differ for identical |types ‘UBYTE [7]’ {aka |types ‘UBYTE [7]’ {aka |‘unsigned char [7]’} and |‘unsigned char [7]’} and |‘unsigned char [7]’ |‘unsigned char [7]’ Last reconfirmed| |2023-04-15 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced: ``` struct vector { vector& operator=(vector&& __x) { return *this; } }; struct tree_node { vector childs; unsigned char pad[7]; tree_node(){} }; tree_node mcts_root; void find_Horner_MCTS_expand_tree () { mcts_root = tree_node(); } ``` Compile at -O2 -Wall is enough to reproduce the failure. Note using unsigned short or unsigned int instead of unsigned char allows it to work.