<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/118073>118073</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang AST crashes on invalid decl type.Assertion `getType(Base)->isPointerType() || getType(Base)->isArrayType()' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mainsea
</td>
</tr>
</table>
<pre>
The provided test case contains compilation errors, and in `clang/lib/AST/APValue.cpp`, the method `QualType APValue::LValueBase::getType() const` is noted to handle `ValueDecl` in an inadequate way for similar situations.
>// FIXME: It's unclear where we're supposed to take the type from, and
// this actually matters for arrays of unknown bound. Eg:
//
// extern int arr[]; void f() { extern int arr[3]; };
// constexpr int *p = &arr[1]; // valid?
//
// For now, we take the most complete type we can find.
The possible reason is that the obtained decl is an invalid decl, causing it to lose its `int[]` type attribute.
crash example like:
```cpp
extern int error_names_array[total_error_count + 2];
extern int error_names_array[];
static int *sqlstate_map = &error_names_array[1];
```
Is this a common way of handling the situation? When Clang detects a compilation error, certain unhandled cases can cause the Clang frontend to crash.However, in my opinion, it should at least not result in a crash.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVE2P4zYM_TXKhdjAlidxcvDBmZ2gC7TAFjtoexvQNhOrI0tekU4m_76Q7J0P9AsIokR-pMn3HonM5uyIKrU5qM3nFU7S-1ANaBwTrhrf3SqV1Y89wRj8xXTUgRALtMgErXcSkdD6YTQWxXgHFIIPrPQ9oOvAOFDbrLXozkofrWmUPtbfHuP319_QTrRux1Fts4iXnmAg6X0XY36d0D7eRoIFqIpaFfXP6fcBefl_JokgpXdK72NBLGqbgWFwXmKxHnp0naWYMsV-ptYmiAN0YBx29H1CIbjiDU4-AJvBWIynTKklXqusVsWD0kelj3D88scvD6qo4YsoXTJMrrWEAa49BYIrKV0GAp7G0fNcgeAzpe4k9nMKfljoUVkNALAklt4wYCsTWnuDAUUocCoJQ8Abgz_B5J6dvzpo_OS6NTycIw3vs3xMSS9CIXYpMccssioOcPGmg9PCmioPfwcWC1KV8fiYNdFML2NIeKXrEVTxGZTezrH5j9gZfkFrOlUc_6POow_g_DXScqU3vgYfreaH0ZIs7F0JWnRwMq5LsmQ1JHd6ZtNYgkDI3kUDSI-SsvgmupQ66Ki18UnSPVWVruJbW5zYuDMYiYJZzwRGOJrGOFl422ZzCSgSTDMJLQW0AbkHesFYJ1jzTLMo0dbpEy2e1e8oTjPy5HAgfkraqs1BvKB9mp-0fkrEHkDPVP5_-CuOBcW0P5Th7zZe0NOAryL9U3j-Gv9a9dzcF158GXUYvEtj4k_zVEXGIsOvo6KKI_zek4P7OPHQkVArS_DHDZFIpxCVgcnNM9qltcJJ4CjIbII51Sl4J-TSPCXC1z_5K10oJTIOhhv40bhYQ7wQ4N5PtgMUsIQscR9AIJ6spNFfkqy6quj2xR5XVOVloXdlvrvbrPoqbzfUdlhsCt3kRXvSu6zALNt3za7Z7LrNylQ603d5rvfZPi_1Zn3a7XZ6q8u2KYq2yDfqLqMBjV1bexnWPpxXhnmiKs93WVmsLDZkOS1erZcFGdVehSoGfGqmM6u7zBoWfkshRixVCQ71t8e5C2LwHy2djLqumSkkytU2e9uUaXvq_SdVPBj-6o0TCu-WqCrvVXkP_4Kvo2He0EqXcEJjqVtNwVa9yMjR_Wmsz0b6qVm3cd8dYwvL8WkM_k9qReljooSVPi6sXCr9VwAAAP__1JUdVQ">