<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/137152>137152</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[GlobalOpt] Incorrect change of atomic type
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:crash,
llvm:optimizations
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
nikic
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nikic
</td>
</tr>
</table>
<pre>
```llvm
; RUN: opt -S -passes=globalopt
@g = internal global ptr null, align 8
define void @init() {
%alloc = call ptr @malloc(i64 48)
store atomic ptr %alloc, ptr @g seq_cst, align 8
ret void
}
define i1 @check() {
%val = load atomic ptr, ptr @g seq_cst, align 8
%cmp = icmp eq ptr %val, null
ret i1 %cmp
}
declare ptr @malloc(i64) allockind("alloc,uninitialized") allocsize(0)
```
Results in:
```
atomic memory access' size must be byte-sized
i1 store atomic i1 true, ptr @g.init seq_cst, align 1
atomic memory access' size must be byte-sized
i1 %g.init.val = load atomic i1, ptr @g.init seq_cst, align 1
LLVM ERROR: Broken module found, compilation aborted!
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyclM-vozYQx_-a4TJKZAwEOHAgL01VaduVUrXXypgJcWMwa5tIeX99ZZN09-2-w9NKSIA9Pz7z9XiEc2qYiBoo9sD5pK5KAudQHBKx-IuxTVxKOtPfG9ix9dH6NgJrIdvj6a8_IGvRzB43f-JmFs6Rg-wwaNMJbWYf7HI2IGQHVJMnOwmN6y7O3uK0aA38BYVWw4RVMGdtT2c1Ed6M6hFypiblgVfAa4RyD6xFBF4IrY2McaXQazDI2RiXgVdql2MefKK988YSCm9GJVfTR4CQ--E6oKMv_0jn3_IgWvKRJcCVB3zDqNLgKi8krz8i3oSOgNqI_pvkH8kJvJDjvMoWPujLE_smomBRuCddoIgOK-KTUGph6T1lAmf8vaqpj9z8qcYyBbmV0OqV-tALT1OnXgl4xVZJ_28GYO2J3KK9QzVB1n6396h6pNHYOwopyTngJYZoOC7OY0fY3T1tXEzI2lDM2_NSKXq70LeybQPkj9qlP58ReLFG3b53air9YPZPn_7-HX85nT6fwr3YW3OlCUfTL5rwbJag9gtKM85KC6_MhKIz1gel0--US_om6-usFgk1aZkXeZ3uqiy5NIzXsi77NC06WeRVlbOurHlWS8p4fWZpohrOeMFynqcsr1i2TXcZia5Md9W56xnPIWc0CqW34SZvjR0S5dxCTZqVacETLTrS7jET4mXPWmmFu8R2ePm6aGavRvUaC3GPuWGbsLnplsFBzrRy3n1N45XXcdj8GifA59lDccDfJmmsJelRXsQ0EJrzU3d_nylZrG4u3s8utBc_Aj8Oyl-WbivNCPwYYdbXZrbmX5Ie-DFW5IAfH0XdGv5fAAAA__9jtYNq">