https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115764
Bug ID: 115764 Summary: When enabling CSE for SLP two operator nodes 526.blender_r breaks Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- We have a two two-operator nodes composed from lanes in different BBs and when CSEing the lane which is on their dominator the lane which is don't care can have children (which do not have that don't care lane) that need to be scheduled in a place not dominating the node: view2d_ops.i: In function ‘view_zoomdrag_apply’: view2d_ops.i:14:6: error: definition in block 3 does not dominate use in block 4 14 | void view_zoomdrag_apply() { | ^~~~~~~~~~~~~~~~~~~ for SSA_NAME: _33 in statement: vect_cstore_24.16_34 = PHI <vect__5.11_18(3), _33(4)> PHI argument _33 for PHI node vect_cstore_24.16_34 = PHI <vect__5.11_18(3), _33(4)> _10 = {_1, _1}; view_zoomdrag_apply_dx = _1; U_0.0_2 = U_0; vectp.13_22 = vzd_15; vect_pretmp_13.14_28 = MEM <vector(2) float> [(float *)vectp.13_22]; vect__12.15_32 = vect_pretmp_13.14_28 - _31; _30 = BIT_FIELD_REF <vect_pretmp_13.14_28, 32, 32>; _29 = BIT_FIELD_REF <vect_pretmp_13.14_28, 32, 0>; pretmp_13 = MEM[(struct View2D *)vzd_15].cur.xmin; _4 = _1 + pretmp_13; pretmp_23 = MEM[(struct View2D *)vzd_15].cur.xmax; if (U_0.0_2 != 0) goto <bb 3>; [50.00%] else goto <bb 4>; [50.00%] <bb 3> [local count: 536870912]: mval_fac_20 = BLI_rctf_size_x_rct_1; ofs_21 = _1 * mval_fac_20; _6 = {ofs_21, _30}; _9 = {_29, ofs_21}; vect__7.10_3 = _9 - _10; vect__4.9_11 = _9 + _10; _33 = VEC_PERM_EXPR <vect__4.9_11, vect__12.15_32, { 0, 3 }>; _19 = VEC_PERM_EXPR <vect__4.9_11, vect__7.10_3, { 0, 3 }>; vect__5.11_18 = _19 + _6; _5 = _4 + ofs_21; _7 = ofs_21 - _1; _8 = _7 + pretmp_23; goto <bb 5>; [100.00%] <bb 4> [local count: 536870912]: _12 = pretmp_23 - _1; <bb 5> [local count: 1073741824]: # cstore_24 = PHI <_5(3), _4(4)> # cstore_25 = PHI <_8(3), _12(4)> # vect_cstore_24.16_34 = PHI <vect__5.11_18(3), _33(4)> vectp.18_35 = vzd_15; MEM <vector(2) float> [(float *)vectp.18_35] = vect_cstore_24.16_34; return;