<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzFV0tz2joU_jVmowmjh43tBQsS6KZpM5PQztxVRrZlUCskxhJtcn_9PbKAGHBIQudOGWPrcc6n89SRClM9j-fCuohN0Lzh2tamWdmIfro1vHpwphHfRQkf-a9oYFRq92hlJURdw_BQqQhPIzwJ7_lSILfD4E4ajQqhzG8kLZK6NE0DPEjWKBrhiCZr-KC1AUiLnEE_NtYhQq-KZycsMjWqRCNq-OtS8EIJtBIr0zwjrqsWIMa1MR5CPElnh11B_HR42m4laqkF-mUkcMYY4N2j1LwshbUSkD2wVs8RzSI6Qa1kNEdReh3YUTuEUcSmaCHW6IXoBsXoCclRjHCXlJwlJV1SepaUdknZWVLWIVVBVgUeRDW8nSfcMWHf4UouNCKjLhM5w0RemOIuDz3DQ3t4Sq7U3g_efd7kOepzRmcVdmYV1rOK9WEbSIM53tT_43Idr0HeMtcxA33LVscM7C21G-FaHbY5kE63DTaN2OyvZEIIqUK6klv34gGf7dDpEHbiKGI3Hio4GuR-UZq8Frk4rCOeYPMpnfBqaHcM1C7jESSjB0IqQj_KTg5ygH2UnR4Ed_xRdnZ51F6Uf0E_qa1oXpUPtnFrtJewk3akz9zxO9D8oodYpNf2yfuw4kMsyvocMXofVnKIxeITr8Bw-q64Dwnes8aoE_RpX9C_kunzw9pbGWHBJSnQikbWkNVb283u7-_ufcF_MJumFL48r7woYXeokFtyjRxvFsJ1q-rsia_WSgDjdnSrV6tsW8f9ESHTRl8pA5HmJS-g9fMRJGXTNhpMXVtAZVPYhvMueBDlBBv_KfhuR74IJz7BoRfhZCc47CIcnwVboE6a7aB8Ah7NkTNz9GQubAww-O0aznFysYDDV7WPmq2f7r7d38zQl9mXu_t_0MN8Mp91ysxFT8v-9e7r1e3dzeQWXcPn88M-Eq69MZBXcobCz8JZ1EcvDnnhm2Q7BSNAjtzzOlB0IUgPBGz9e8YtFKPnYWgHZs8Un11_m50hof6nCL8swDswPQXnTCwcHrDDuyx9VdHypyzDwNK5tfUK00_wLKRbbophaVbQUerX7nO1bswPuBhAF-ZW0jfyKqW4KossF1nF44pQzknGaJXGIxLzqhxxTsuMDqoxq3KW8wHfuKVpxnqjzVqZtbCDTaPGH5ZAWrsR_vqT0DzBg-VYZDwWI4ZLnBeC4KRKcFonaUWyss7SMh8oDnccO46S64hSLfxlByCgHSXTwZ9LIMcUU4oJJpSSNMmHOMdVViRJnsaixnkMJhcrLtXQ4wxNsxg04xay2CwsTCpp4Xa0n-RQ5RdaiFZgkNBJp8S457KHgHKzgpuYj6TfUikoOptGt0cIi0Jn0Ao7biX9D0gbCZc>52950</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            LoadStoreVectorizer assumes non-willreturn calls return
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

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

<pre>
    Test: Transforms/LoadStoreVectorizer/int_sideeffect.ll

The transformation below is incorrect if `%p` points to just 12-bytes of dereferenceable memory and `@foo` exits.

```
define void @test_inaccessiblememonly(* %p) {
  %p0 = gep * %p, 4 x i64 0
  %p1 = gep * %p, 4 x i64 1
  %p2 = gep * %p, 4 x i64 2
  %p3 = gep * %p, 4 x i64 3
  %l0 = load float, * %p0, align 16
  %l1 = load float, * %p1, align 4
  %l2 = load float, * %p2, align 4
  call void @foo() inaccessiblememonly
  %l3 = load float, * %p3, align 4
  store float %l0, * %p0, align 16
  call void @foo() inaccessiblememonly
  store float %l1, * %p1, align 4
  store float %l2, * %p2, align 4
  store float %l3, * %p3, align 4
  ret void
}
=>
define void @test_inaccessiblememonly(* %p) {
  %p0 = gep * %p, 4 x i64 0
  %1 = bitcast * %p0 to *
  %2 = load <4 x float>, * %1, align 16
  %l01 = extractelement <4 x float> %2, i32 0
  %l12 = extractelement <4 x float> %2, i32 1
  %l23 = extractelement <4 x float> %2, i32 2
  %l34 = extractelement <4 x float> %2, i32 3
  call void @foo() inaccessiblememonly
  call void @foo() inaccessiblememonly
  %3 = insertelement <4 x float> poison, float %l01, i32 0
  %4 = insertelement <4 x float> %3, float %l12, i32 1
  %5 = insertelement <4 x float> %4, float %l23, i32 2
  %6 = insertelement <4 x float> %5, float %l34, i32 3
  %7 = bitcast * %p0 to *
  store <4 x float> %6, * %7, align 16
  ret void
}
Transformation doesn't verify!
ERROR: Source is more defined than target

Example:
* %p = pointer(non-local, block_id=1, offset=0)

Source:
* %p0 = pointer(non-local, block_id=1, offset=0)
* %p1 = pointer(non-local, block_id=1, offset=4)
* %p2 = pointer(non-local, block_id=1, offset=8)
* %p3 = pointer(non-local, block_id=1, offset=12)
float %l0 = poison
float %l1 = poison
float %l2 = poison
void = UB triggered!

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >       size: 0 align: 1        alloc type: 0
Block 1 >       size: 12        align: 32   alloc type: 0
Block 2 >       align: 4        alloc type: 0

Target:
* %p0 = pointer(non-local, block_id=1, offset=0)
* %1 = pointer(non-local, block_id=1, offset=0)
<4 x float> %2 = UB triggered!
```

cc @nikic
https://github.com/llvm/llvm-project/commit/9d720dcb89e8da4d12aa1832d74614adc6aa2c82
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFV1tv4jgU_jXhxSqK7YSQBx6gMC_bGSTKrLRPlZM44Bljo9jMlP31exwHGiClhdVqUUh8Oec7d18yXexHS25sQMdoWTFlSl1tTEC-PGlWPFtd8T95Dh_xN69gVCj7YkTBeVnCcF_KIJwG4di_l2uO7AGDWaEVyrjUv5EwSKhcVxXwIFGiYBAGJN7CB201QBpkNfqxMxZh8pDtLTdIl6jgFS_hr3LOMsnRhm90tUdMFTVAFJZaOwj-KqzptxVx0_6puwUvheLolxbAGYUAb1-EYnnOjRGA7ICV3AdkGJAxqjUjKQqSiWdH9VCIAjpFK75Fb0SPKEKvSAwiFLZJ8VVS3CYlV0lJm5ReJaUtUul1lRBBVMLbOsIDU-g6TIqVQnjQZsJXmPAbU9TmIVd4SAdPzqQ8xsGFz7k8RV3BaEmhV6TQDinGpa0n9e740P7b9TqXgT9y1zkD-chX5wz0I7MrbmsbmhpIpk2DTgM6-18qwadUJmzOjH2LgKt26LQIW3kU0EcH5QMNer8Zjd_L3NDL4a-w-OSWOzOUPQeqxTgEQcmJkhKTW9nxSQ3QW9nJSXJHt7LT-7P2rvrz9gllePWufrCMG62chq2yw13ujj6B5oSeYuFO38efw4pOsQjtCsTgc1jxKRaNLqICw8mn8t4XeIeMQSvpk66kf6fSl6d7b6G5gZAkQMsrUUJVN76bLRbzhdvwn_WuyrnbnjdOFb86FMiumUKWVStu27vq7JVttpIDYzPa2FUbW-_j7ogwVFo9SA2Z5jTPoPXzBTSl0zobdFkaQKVTWIbTNrhX5QI7_LfghxX5LpzoAofchTO8wKF34bgqaIBaZXaAcgV4NoevzJGLOb8wwOD3CZzjxGoFh6_imDVNnObfF48z9HX2db74Cz0vx8tZa5u566nZv82_PTzNH8dPaAKfP56PmTBxzkDOyBnyPwNnUZe9oa8L18TNFIwAObL7radoQ-AOCFj6j4wNFCXXYUgL5sgUXZXfVKcvqP8ow-9L8BZMx4ZzJRdOD9j-neduV1Hip8j9wNrarXEGky_wrIRd77J-rjfQkfLX4fOwrfQPuBhAF-Y2wjXSIiFhkWfDlA8LFhWYMIaHlBRJNMARK_IBYyQfkl4xokVKU9azwko-6ri0IGbMbgM3CueR30JKWDx3laq3QoN8p7er5OhmbQUAc3dVikkah731KKJFksRxgkOSJqzM0oIP4aYUkkGCB_kg6kkG9yEzCuJJQIji7mIEENAO4mlPjEhISIhDTAhO4rQfpmExzOI4TSIASSNwLt8wIftOj76uVr1qVKuU7VYGJqUwcA86ToLdkJ2c1-IAn-3sWlcjtVN6K_WWm14tfVRr_w_2H_O7">