diff options
| author | Eli Friedman <efriedma@quicinc.com> | 2024-08-01 16:18:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-01 16:18:20 -0700 |
| commit | 1762e01cca0186f1862db561cfd9019164b8c654 (patch) | |
| tree | b4f4bdc94d8d492246e220640c67bf4b110bcbc8 /lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedProcessPythonInterface | |
| parent | ae6dc64ec670891cb15049277e43133d4df7fb4b (diff) | |
Fix codegen of consteval functions returning an empty class, and related issues (#93115)
Fix codegen of consteval functions returning an empty class, and related
issues
If a class is empty, don't store it to memory: the store might overwrite
useful data. Similarly, if a class has tail padding that might overlap
other fields, don't store the tail padding to memory.
The problem here turned out a bit more general than I initially thought:
basically all uses of EmitAggregateStore were broken. Call lowering had
a method that did mostly the right thing, though: CreateCoercedStore.
Adapt CreateCoercedStore so it always does the conservatively right
thing, and use it for both calls and ConstantExpr.
Also, along the way, fix the "overlap" bit in AggValueSlot: the bit was
set incorrectly for empty classes in some cases.
Fixes #93040.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/ScriptedProcessPythonInterface')
0 files changed, 0 insertions, 0 deletions
