<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55744>55744</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang/lldb] wrong value of element in struct when the value is changed in noinline function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
yangyibiao
</td>
</tr>
</table>
<pre>
$ cat small.c
```
struct bm {
unsigned a;
};
int __attribute__ ((noinline))
foo (struct bm *p)
{
p->a = 1;
return 1;
}
int main()
{
struct bm v = {0};
foo (&v);
return 0;
}
```
$ clang -O1 -g small.c; lldb a.out
```
(lldb) target create "a.out"
Current executable set to '/root/DeVIL/a.out' (x86_64).
(lldb) b 16
Breakpoint 1: where = a.out`main at small.c:16:3, address = 0x0000000000000610
(lldb) r
Process 7305 launched: '/root/DeVIL/a.out' (x86_64)
Process 7305 stopped
* thread #1, name = 'a.out', stop reason = breakpoint 1.1
frame #0: 0x0000555555554610 a.out`main at small.c:16:3
13 {
14 struct bm v = {0};
15 foo (&v);
-> 16 return 0;
17 }
(lldb) fr var
(bm) v = (a = 0)
(lldb)
```
We can found that the variable a in the struct v is `0`. However, the function foo is called, this element a is assigned to `1`. I was wondering that this should be a bug.
$ clang --version
```
Ubuntu clang version 15.0.0-++20220520091548+a61835b1e3f5-1~exp1~20220520091641.498
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNVcmu4jgU_ZqwuUrkOBMsWEBRT_2klroXPSyRnRiS7mAjD8D7-752DC9VUOpCFgl3POcOhqvuY52QXUI2CS2hZRbMiY1j1kZhTeIJP43VrrXAT5A020kE4KQZjlJ0wJIiCpNm9_kevgdpYb9n1uqBOyv2e0joEo9UgxwHKRK68ifYHpTy2lkyujk_tLPM5zQpvjJIih3kj3wAWlin5Uzk4XyH5cQGGRA8R_3MewmhUUXmhAAiwITWFx_gKTN5kfnbQs5KPjJ5hPS3HNLjo_bFFsax48Ay5ezrAHTpLTA9WKaPwkKrBbMCcdHJi9LJ8ovTWiBjcROts4yPAgyaW0-hSeibVgqN33bir_df8RmdG0_wtqz3dYk5sqekHPJ6Em4x779n5YuKFd_AtRdahMJNoWriaw2zySo26FtsioR-AdZ1WhgT7MmNzD91_sxVT5LftWq9V1OQCkbmZNuLzif_eUovAhmrzmeME5NuwPbIrUO3IvdYJTtNxDDWPaaXez9sPTNKBjWfVSTL77OBY6NDAFoQD3ViW8VPiWz_v2D3UHkBkJDVbGghL4PoZ8YX8ira_mCQ_Vphf6PR01D7CE0EsHtq0UHDhemHmJ-8MEKhy2lbyefePRxfjvnfAu8kiTid7LAdWBPbCx9_CIPMAAvlJZH0BQYcpZr4ABn8oq7iIrRvkbc54JjYQcnAGu1aLC52O2jxpxjFye8J8zpm4p3m16QmeYj3Dldm4KpkJ_SASxvxoLnplRs74B4Rd8cMfrDlKcIxCOEl1z-5k9ZF02iIrcpIRtKEbvFQQimpKCGrvCqxa1tW58ui4rkoDlWaJ81XcTv7x8ywLvOsXC2nFH-Eq8JP37QH6blN8fZ1t_QoXTSZZv6kOjF6w7Myw21SvUtjQ812g56W7c0ZLO8bH-Q3hO-8Ft266FbFii3sYEexTqptYIcuoenVDq5aebZsdALU4dEEbGtsKV4nMjbd2_i-9RgCW4M293-PR28XTo_r3tqzQYCYBs9xsL3jWatOIe3l_kjPWv0jWn9RDMY4YfClqpqyXPTrhpd5u2zLuuWsWuGhLZa8qFfNkrQrzhcj42I0nhCSWAzrWPAlyWlNm6ytV0VXMHRhBSddkZRE4FKPmU-cKX1c6HXAgMNiUDkOxppPZZw-cY_PnO2VXn8g74-BD0wtAuJ1gPsft14ttQ">