<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/141114>141114</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Unknown references and pointers related bad codegen
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend,
needs-reduction
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
shafik
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
shafik
</td>
</tr>
</table>
<pre>
This semi-reduced code from: https://github.com/llvm/llvm-project/pull/95474#issuecomment-2884165093
```cpp
struct MyStruct {
double m0{-9999.0};
int m1{-12345};
};
constexpr MyStruct default_val;
auto compute_area(double l, const MyStruct &val = default_val) -> double {
if (val.m1 == 1)
return 2.0;
return 0;
}
#include <cassert>
auto main() -> int {
MyStruct in_val{.m0 = 2.0, .m1 = 1};
double val = compute_area(1.0, in_val);
assert(val == 2.0);
}
```
crashes at runtime, it looks like due to `VD->getAnyInitializer(VD)` pulling in the default value.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUlM-uqzYQxp9m2IyC7AECLFhwTm6kLrpqe7dXDgyJe4wd-U_a06evICTp6e5KSCDGM_P9xv6sQtBny9xB9QZE4aIm_QFEUB0yleLF-e7-Lzu58bP7_aIDBp71zvOYBh5xcCPj5N0MRY-XGK8Bih7oCHQ863hJp3xwM9DRmNvjtbt69ycPEeh4TcYAHduqrEugQoeQeHDzzDbuqGlKua9EW4Dol2cv7s9wvYLoQ_RpiPjr52_3D6jfQPSIiKNLJ8M4C6jfdm3btrmA-gDFI65txFkuQUlFWT1jrw_RD86GyH9f_avByJNKJv64KfNcplJ0OLj5miL_UJ4VULO1N0DvuJb5j0ba35RBKA5fqlGLOyi-PYS_SPSEQM1NmXyWS9aSKIHaLYzoOSZvkXLxwtv-iRfUfXyiXyZsB5NGRijeBxUC-wjFt-eCFWdW2gI1T1XLuF6Snizartrrt3wWK9Eigt5xk4ryy8w3tAf9_0Ym76lbSWq3vE3gOoEH_tql_cL2OBfbznkVLhxQRfTJRj3zWjqice4joNEfjGNijA5hL74fFsYzx95-_mJ11Mrof9gDNd8PS5-9wOWMantGbTFe-LFxC0riPBu7YmyLVmXcybqs26IWsswuXSNJ7Ac5TVM5kKyqgU7lvq5Vw5Wo5Yky3ZGgSlREshFFIfK6alSlhqkeFbVKjVAKnpU2-eKZ3Plzttqjk6WUssyMOrEJm28Ho-wZin7yzka24-JgegciyzyGu1mjdnZztu9WH57SOUApjA4xvLpEHQ13f9gP6_6y6Hliz3ZYJmpHvDptI_uAno2KPOJJ3e-AM9ssedP99BWwQgWg48Z16-jfAAAA___yLGEt">