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

    <tr>
        <th>Summary</th>
        <td>
            Align attribute doesn't dereferenceability
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            llvm:instcombine
      </td>
    </tr>

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

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

<pre>
    InstCombine does the following propagation of align(32) in the function argument to the load.
However these `align` have different semantics. Align in load/store imply dereferenceability of the size rounded up to the alignment (per LangRef). Align in a function argument does not.

```llvm
define i32 @foo2(ptr align(32) %a) {
  %#0 = load i32, ptr %a, align 4
  ret i32 %#0
}
=>
define i32 @foo2(ptr align(32) %a) {
  %#0 = load i32, ptr align(32) %a, align 32
  ret i32 %#0
}
Transformation doesn't verify! (unsound)
ERROR: Source is more defined than target

Example:
ptr align(32) %a = pointer(non-local, block_id=1, offset=0)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0U01v6zYQ_DWrCxGDXurzoIMTxWiBAgXc3gtKWslsKVIgKafury8oOmnQl8O7PMCwJHJnZ2Y_pPdqNkQtFM9QdJncwtW61mzGrtqu5LPejvf2Z-PDi116ZYiNljwLV2KT1dq-KTOz1dlVzjIoa5idmNRqNoC1QMCGKZOiNzPsAdLN20ImsGD3C23leADeAT_9ZN_oRi4ee2JQ8pSp5Owqb8RGNU3kItTTIk1Qgz-wUwyJJDEP4NkH64ipZdV3NpKjHTGQ7JVW4R7lRVKv_iHm7GZGGtm2vmvZ-XZxgPVKjv0izXyhCbD5xCS_MLNXxdjwcPL4L3n6aX1b0tFIUyyiEsgg55O1GJmC-1_RAAu5P6vnhGPxCFBwBqLbvcYcgC8sglP4S0rC8neIo5CYEvQhquoeL6ID8fojZX0Ffhcp8PtU_u6k8ZN1SxqvWGcDWAV2I6emO-Ax9mozPjYTsEmo18vl1wuIE_vNbm4gpjxb4lwknyMLV2lYkG6m8Llhr3_LZdUE4vH9tYnd62qVCeQAa2PNk7aD1NFcr-3w1x9qBNEd47edJk8BRMc_tH1MRTa2YmxEIzNqj9UxF3WBRZVd2yGfjkN5bEQxFAUf-UQNn4q6ruqyrEVdZ6pFjjnPsTlyXonqkNfU9xJRFlPZS15DzmmRSh_i5B2smzPl_UZtw_O8zLTsSft95xEX5Qe7rErvBQaM3QPEfWTFSRkfhrT58aroMtfGq6d-mz3kXCsf_H8sQQVNbdoUGYJT_RboU9O-3chsc7q9hrD6WHU8A55nFa5bfxjsAnjedaTH0-rsnzQEwPPuxgOed0P_BgAA__9e1XW3">