<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111507>111507</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang][Forend] The generated LLVM IR has an error because the frontend ignores the volatile qualifier
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
fioraking
</td>
</tr>
</table>
<pre>
Hey guys, I found a problem,
```
volatile register int i asm("x22");
register int j asm("x23");
int main () {
i = 12;
j = 13;
return i + j;
}
```
Generate llvm ir like this:
```
define dso_local signext i32 @main() #0 {
entry:
%retval = alloca i32, align 4
store i32 0, ptr %retval, align 4
call void @llvm.write_register.i32(metadata !0, i32 12)
call void @llvm.write_register.i32(metadata !1, i32 13)
%0 = call i32 @llvm.read_register.i32(metadata !0)
%1 = call i32 @llvm.read_register.i32(metadata !1)
%add = add nsw i32 %0, %1
ret i32 %add
}
```
why "volatile" is ignored?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclM-O2zYQxp-GugxikENpLR10yMZwGyC9FEWvASWOJW5ocktS3vjtC9Lyn6QpAgQQZJj85jcznzhUMZrJEfWseWbNrlJLmn3oD8YH9cW4qRq8Pve_0xmm5RwZfoCPcPCL06DgNfjB0jEvMr5j_D174utT_p68VclYgkCTiYkCGJfAgIpHhi1D_IrI8tMx-XwJ-Ub58qiU3ykv7yw7KuOgyDpg23UbDDC5A4G3AHi5rMiHZGkJLivxGV7u5O3uh-1c3r-Ro6ASgbWnI5gA1nwhSLOJTL7_YZymg3EEOvrP1o_KQnH8awIjEVjNc_3X8lHyew_kUjjfqMCwCZROypY-lM2wzMj-K2smB_WqhJh8oMLnefc1hXv0f-WjshZO3uhcTW5r8xZMos_Xj7EpSdojJaVVUsBQFGzmi_JR1rS_ABI3kHwAMWx46bIQV58KMJDSPynskSJ-jSK-pSitL55rDS6-XVDYFBNykqs0ULruKa2_P03_f6be5jMwxOu8MEQwEczkfCDN5B4q3UvdyU5V1IsttnLbtk9dNfeyFfxpK-p2OAyEbafHplM4yFEL0bbbpjI9cqwF5y3vRI3dppG8Jq4aMbT1QXaK1ZyOythNMcaHqTIxLtQLIRq-rawayMZyOyCOVrkpz2Gzq0KfA94NyxSzqyameEckk2y5Uj6UiGbHmue9D-Q0a3bw10wwrWOk4dOnv_-Aj3_CrCIoBxSCDzDQqJaY54rgELxL5PRqSCyLt7vln0VZczAUqiXYfk7ptQwi7hnuJ5PmZdiM_shwn4tbf969Bv9CY2K4L81Ghvu131OP_wYAAP__Yih3Iw">