<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">