[Bug tree-optimization/103169] [12 Regression] ICE: verify_ssa failed (error: definition in block 3 does not dominate use in block 4) since r12-4785-ged3de62ac949c92ad41ef6de7cc926fbb2a510ce

tnfchris at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Nov 11 10:16:49 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103169

Tamar Christina <tnfchris at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |tnfchris at gcc dot gnu.org

--- Comment #2 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
looking at the tree it looks like with the new SLP layout the complex MUL is
detected but complex MUL re-arranges the nodes.  The nodes are

/app/example.c:6:7: note:   op: VEC_PERM_EXPR
/app/example.c:6:7: note:       { }
/app/example.c:6:7: note:       lane permutation { 0[0] 1[1] }
/app/example.c:6:7: note:       children 0x32b1ce0 0x32b2820
/app/example.c:6:7: note:   node 0x32b1ce0 (max_nunits=2, refcnt=1)
/app/example.c:6:7: note:   op template: _15 = PHI <_10(7), _13(3)>
/app/example.c:6:7: note:       stmt 0 _15 = PHI <_10(7), _13(3)>
/app/example.c:6:7: note:       stmt 1 _16 = PHI <_11(7), _14(3)>
/app/example.c:6:7: note:       children 0x32b1d70 0x32b2280

where 0x32b2820 is some externals.  By only selecting one of the phi nodes as
it re-orders it breaks the dominance. So I guess this transformation should
happen when any of the operands to the MUL is a phi node.

This I think happens because is_linear_load is punting for this node and we
return PERM_TOP where I think PERM_UNKNOWN is better here.


More information about the Gcc-bugs mailing list