<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/86336>86336</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Inliner does not seem to respect `[[clang::uninitialized]]`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
SchrodingerZhu
</td>
</tr>
</table>
<pre>
Not sure if this is by design or not, but the following behavior looks a bit awkward to me (with `-ftrivial-auto-var-init=pattern -O3`):
```c++
template <class T>
T uninitialized() {
[[clang::uninitialized]] T data;
return data;
}
struct Foo {
int data[16];
};
Foo test() {
Foo a;
return a;
}
Foo test2() {
Foo a = uninitialized<Foo>();
return a;
}
Foo test3() {
[[clang::uninitialized]] Foo a;
return a;
}
Foo test4() {
[[clang::uninitialized]] Foo a;
Foo b = a;
return b;
}
```
would generate
```asm
.LCPI0_0:
.zero 16,170
test(): # @test()
movq %rdi, %rax
movaps .LCPI0_0(%rip), %xmm0 # xmm0 = [170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170]
movups %xmm0, 48(%rdi)
movups %xmm0, 32(%rdi)
movups %xmm0, 16(%rdi)
movups %xmm0, (%rdi)
retq
.LCPI1_0:
.zero 16,170
test2(): # @test2()
movq %rdi, %rax
movaps .LCPI1_0(%rip), %xmm0 # xmm0 = [170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170]
movups %xmm0, 48(%rdi)
movups %xmm0, 32(%rdi)
movups %xmm0, 16(%rdi)
movups %xmm0, (%rdi)
retq
test3(): # @test3()
movq %rdi, %rax
retq
test4(): # @test4()
movq %rdi, %rax
retq
```
It seems that in `test2`, the attribute is dropped after inlining.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsVk1v4zYQ_TX0ZWCDIvVhH3TY2DUQoGgLNKdeCsoaSexSopYc2bv76wvKdiw7TpoG7W0JgRZIzps388bUKO913SHmLHlgyWamBmqsy3_fNc6WuqvR_dEMs8KW3_JfLIEfHIKugBrtQXsovkGJAQGsg84SE2soBgJqECprjD3oroYCG7XX1oGx9rMHBYUmUIfPB-VKIAstAhPLg6YGWMrnFTm918rM1UB2vldurjtNTG56RYSug_mvkqWciRWTnxjfMH6eU358dkw8hGdcJWx7owiByfXOKO_hicmfjntPMHQBXCujv2PJxJKJFbDsZAoAMCbmYWdUVwd38tO1RbJhyQaeoFSkmDzbOaTBddeLLNtMyXpyw45ga-21P93R0S55iNIAP7V_fh_nYEvo6R7tsDchBHDm9CqhM5p4FQ6Y3NwkTK631oZ0jjYf8idf-HtXyj8eYPxhmV_6DCvFmJe7XIo7XM5FOqV2sIMpocYOnSK8W9PKt8eVxc_r3x75n_y5-GHxHZ0FgChlYh1l_Fz358pgcuT0xmBCAov5xOSI3Nr9l-N-4kod_t3hTX29BBpGa_eq9wDPzAJE4nQfgI42X9uW3_gbl0LmQqVn_ET9_5iTzSWcIRA9EQrc4uWJbQhv9SKu2-NS_OPxyekgyL8Av3PYIX2ZyB5NZT-N19UXF_knAosrhS9s3i_0M5UfOv9XOp_GRe7JzXijn_yAfte48TuvhYnT-FWnb1fMxfHNvfdI4BFbD9QoAt2FL_-xOtMxR6GDUEROFwNhaDVKZ_seS1AVoQPdGd3prl7MylyWK7lSM8yjLIoima1EOmvyZYGY4bJIIqzSqIqyeJcssSjirKoygfFM54KLmEshBOeJiBdVFRdYZTHHLOIrLFjMsVXaLIzZtwvr6pn2fsB8mUqZzowq0PixbxKiwwOMm0yI0Ea5PNjMi6H2LOZGe_IXFNJkMH8MEaCD0qIPrdOYjtANOfQ97igk5D0fJZZymA3O5A1R78MxsWViW2tqhmKxsy0T2-D69DPvnf0Ld8TEdiTsmdiOAf0dAAD__8QsozU">