<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/104637>104637</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            SLP Vectorizer crash due to commit ca654acc16c43191228eadfec8f7241dca10b0c3
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            alexey-bataev
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ivankelarev
      </td>
    </tr>
</table>

<pre>
    ca654acc16c43191228eadfec8f7241dca10b0c3 change in SLP Vectorizer causes a crash for this test case:

```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @a_(double %c__fetch.3) {
alloca_0:
  %mul.3 = fmul double 0.000000e+00, %c__fetch.3
  %mul.4 = fmul double 0.000000e+00, 0.000000e+00
  br label %loop.69

loop.69:                                          ; preds = %loop.69, %alloca_0
  %t48.0 = phi double [ 0.000000e+00, %alloca_0 ], [ %5, %loop.69 ]
  %t50.0 = phi double [ 0.000000e+00, %alloca_0 ], [ %3, %loop.69 ]
  %t52.0 = phi double [ 0.000000e+00, %alloca_0 ], [ %7, %loop.69 ]
  %0 = fmul double %t52.0, %mul.3
  %1 = fmul double %t48.0, %mul.4
  %2 = fadd double %1, %0
  %3 = fadd double %2, 0.000000e+00
  %4 = fmul double 0.000000e+00, %mul.3
  %5 = fadd double 0.000000e+00, %4
  %6 = fmul double 0.000000e+00, %mul.4
  %7 = fadd double 0.000000e+00, %6
  br label %loop.69
}
```

After slp-vectorizer pass IR is being transformed to as incorrect one:
```
define void @a_(double %c__fetch.3) {
alloca_0:
  %0 = shufflevector <2 x double> %2, <2 x double> <double 0.000000e+00, double poison>, <2 x i32> <i32 2, i32 0>
  %1 = fmul <2 x double> zeroinitializer, %0
  %2 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %c__fetch.3, i32 0
  %3 = fmul <2 x double> zeroinitializer, %2
  br label %loop.69

loop.69: ; preds = %loop.69, %alloca_0
  %t50.0 = phi double [ 0.000000e+00, %alloca_0 ], [ %9, %loop.69 ]
  %4 = phi <2 x double> [ zeroinitializer, %alloca_0 ], [ %11, %loop.69 ]
  %5 = fmul <2 x double> %4, %1
  %6 = extractelement <2 x double> %5, i32 0
  %7 = extractelement <2 x double> %5, i32 1
  %8 = fadd double %6, %7
  %9 = fadd double %8, 0.000000e+00
  %10 = fmul <2 x double> zeroinitializer, %3
  %11 = fadd <2 x double> zeroinitializer, %10
  br label %loop.69
}
```

Error message:

```
Instruction does not dominate all uses!
  %2 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %c__fetch.3, i32 0
  %0 = shufflevector <2 x double> %2, <2 x double> <double 0.000000e+00, double poison>, <2 x i32> <i32 2, i32 0>
LLVM ERROR: Broken module found, compilation aborted!
```

Reverting the mentioned commit makes this test pass. @alexey-bataev could you please take a look?

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMV19v4roT_TTmZQTynySEBx7KtpVW2p9-V11pXytjT8AXx0a2w233018lBJoWSundfVhUuYkzZ87MeHIcyxjNyiHOSb4gnEuLT_g8XsokcUc4J_ntSDZp7cPc7KTboJUBd6Ol189zJYs8k0qxQmWCzRjnJUpdoSqrKc-YVpLRJVUC1Fq6FYJx8P3bX_ADVfLB_MQASjYRI0hQQcY1VD5AWpsICWMCJSMScUPoLaGHsaD9X3ebZFhhAi2TtPLZNwmIuAXCOY5rIm5wvOVTSsSN4N3Q3rLXt-1VkXXD2BwvGC-JuGG8HFcl7a9cN1Uc4EU2_t6acf4qlBTM1uIhjKeyeCyyceM2zv_jxta45mm8cs0RtR81VsYh7LzRQDIqHwkvtW-WrSOeq8fHCpNaTwThMyDTxR4krfVKPtJjhaA1rhs7ER19VTcWei90QrsfEr6glPAvb_y-xmdX4N_M9A6WAaxcom09We-3k2I2zPMwJW7g6h8RC9gG1LGv6dHvPoljFV5SSFk5oZ31dm0OGZB8cb4KBwdA8ttuKl-003n_uGfrng4ocvrrFOIDCv7rFNOLFPRknQ-8PaxrpgGAnQW05R4AsgGA7wFS6wGA9cbDNRPnDPn7jUZ4fk2XnskhP2E6CxtmUVzPNIRNr2MqPn55prdn1W8_3lQJA0S7He9edHUrY4SvD2AiLNG4FaQgXax8qFFD8iAjGKd8CKgSeDeQ2dcUv1GZ9t0W101VWdyHCkR84fDUl4eIu-Oqnz4QX94tYv9g6030joi7gQPTanWHNoJD57q9oK3V2b4-If6JwRtnkpG2reyZ3t03uXERQ0KLNbp0Kf4-zJe43yS0j_98kQ_Rn7w4nwidf16s_4MG_w6BnF1Ur-zo_rTY-eKd5N9hYuwiVX6hyJ1W7MHsRDPwKQWpLnRFv9G8XdXpp9FD7vKcmBZ9kNOB4eycYXlRdRn9dMO92kHYC-WVcHbF18VFgbwLwQeoMUa5-uB78quLKTQqGe9Ae4zgfALta-NkQpDWQvu5Sjj7U17_P1NUv3378T-4e3j4_0OrHovgN-ig9rqxCJVvnG4hytdbY2VXa7n0IaE-FvbsOj7gDkPqNrM1Qltn4x3q1lFtEtRyg3Fwemi3wEm3aQ1PNKB8YzU8-wa2FmVESHKDIMF6vyHifk810nOhZ2ImRzhnUy5KUTLKR-s5o7OMltMlpXmV52q21BUvy0wypkShSzkyc055RktWsFmeUz7RjOlcKMwzJXCmC5JRrKWxE2t39cSH1cjE2OCc0awQ01HX4LE7i-W3ozBvrcbLZhVJRq2JKb7gkkkW528PVN05SjfY7vJ9Za49po2aYOfrlLaxfUv4PeH3K5PWzXKifE34fcvc_xtvg_8bVSL8vgs_En7fZ7Cb838DAAD__8cR6D0">