<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73563>73563</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
lldb: CXXRecordDecl is incorrectly marked as trivial
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lldb
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hokein
</td>
</tr>
</table>
<pre>
Split from the issue https://github.com/llvm/llvm-project/issues/72913.
```
// CXXRecordDecl emitted by clang is DefinitionData pass_in_registers aggregate standard_layout trivially_copyable literal has_constexpr_non_copy_move_ctor can_const_default_init
// CXXRecordDecl emitted by lldb is DefinitionData pass_in_registers aggregate standard_layout trivially_copyable pod trivial literal
struct NonTrivialCtor {
int a = 0;
};
```
The synthetic CXXRecordDecl AST node in lldb is incorrectly marked as **trivial**, this will cause incorrect layout calculation.
[Comments](https://github.com/llvm/llvm-project/issues/72913#issuecomment-1822801804) from @Michael137
> Something I noticed that makes this trickier is that RecordDecl::isTrivial() returns true for bar when using LLDBs AST. Whereas with clang it's actually false (which is correct because bar has a default member initialiser, making the default constructor non-trivial). This is important for mustSkipTailPadding, to determine whether to round up the size to alignment or not. So that's a separate bug that needs fixing first
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVF2L6zYQ_TXKy7DBlpJ18uCH7KYLhdtSmkDvWxhLE1uNLBlpvHvTX19kJ3fZhULhXjBKNPqYc86cEaZkW09Ui_WTWO8XOHIXYt2FC1m_aIK51ofBWYZzDD1wR2BTGgk65iEJtRPyRciX1nI3NksdeiFfnHu9_zwMMfxNmoV8mY4lIV8quS3VUhR7Uexu42Nx--bpdCU8f_36J-kQzZ60A-otMxlorqAd-hZsgj2drbdsg98jIwyY0sn6U6TWJqaYANs2UotMkBi9wWhODq9hZOBoXy06dz3pMFyxcQTOMkV00GE66eAT07chnnzw05ZTH17ppDlE0OjnDSdDZxwdnzKK_4fdOdP8fOhDMPfwncYMJ3EcNcPvwR_n5edMQFRP8zKA9QwIQu2hEOoWFdX-_f-n0kzjsSNIV88dsdWfuO4OR_DBEFj_naz1OsRImt0VeowXMoAJhNwJubvBnidCPgN3NsGbdQ40joneD8ONv0anR4dZu48uWj89h74nz0ms90JuftCiQqopoOdLH8qNlJui3BQrIbdzO4hV8ZvVHZIrVQUfwKhf4BB64s76Fn4FH9hqMsAdMvR4oTQT5Wj1xVLMMk1r71Jm5Gpn0_Gu0CbnjcRj9PngSHAOERqM8NaRhzHlVF--7J9SrsIS_uooEmYxubs3DQtZJUDNY3YQnNElAiE3b53VXQZxF7uhWf58fYcJEG5mh576JgPO9kVnE8Vcth4vOX1-IO4bpx7J_gsRfPAP30u9XcIxk89fP4TI6Hni0o-JDxc7HNG6P9AY69vJEgEMMcXeespcuaOYgzGM3sA4TFmT_YdyEJ1tfS4YTGl5CYcwSTszh0QDxtxXzdjOknsik-Bsv2UCZxsTf6jkNC5MrcxWbXFBdVkVZVlWq2K96OqVUY3S2GxVUT0253JVNY9FtVF01oUplFrYWhZSlaWsZKEeV-ul3ha4VbKq1ptVoUojVgX1aN0yu3EZYruYbFdXav2oFg4bcml6naXMDSWkzO90rCfzNmObxKpwNnF6v4AtO6qn3Wr3qUH_sx9v5VmM0dU_0DoZ9b8BAAD__0DoILQ">