dwarf2out: Fix ICE on large _BitInt in loc_list_from_tree_1 [PR113637]
This spot uses SCALAR_INT_TYPE_MODE which obviously ICEs for large/huge BITINT_TYPE types which have BLKmode. But such large BITINT_TYPEs certainly don't fit into DWARF2_ADDR_SIZE either, so we can just assume it would be false if type has BLKmode. 2024-01-31 Jakub Jelinek <jakub@redhat.com> PR debug/113637 * dwarf2out.cc (loc_list_from_tree_1): Assume integral types with BLKmode are larger than DWARF2_ADDR_SIZE. * gcc.dg/bitint-80.c: New test.
This commit is contained in:
parent
90ac839a47
commit
457d2b59b5
2 changed files with 16 additions and 0 deletions
|
@ -19027,6 +19027,7 @@ loc_list_from_tree_1 (tree loc, int want_address,
|
|||
&& ! DECL_IGNORED_P (loc)
|
||||
&& (INTEGRAL_TYPE_P (TREE_TYPE (loc))
|
||||
|| POINTER_TYPE_P (TREE_TYPE (loc)))
|
||||
&& TYPE_MODE (TREE_TYPE (loc)) != BLKmode
|
||||
&& (GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (loc)))
|
||||
<= DWARF2_ADDR_SIZE))
|
||||
{
|
||||
|
|
15
gcc/testsuite/gcc.dg/bitint-80.c
Normal file
15
gcc/testsuite/gcc.dg/bitint-80.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* PR debug/113637 */
|
||||
/* { dg-do compile { target bitint } } */
|
||||
/* { dg-options "-g -std=c23" } */
|
||||
|
||||
#if __BITINT_MAXWIDTH__ >= 639
|
||||
typedef _BitInt(639) B;
|
||||
#else
|
||||
typedef _BitInt(63) B;
|
||||
#endif
|
||||
|
||||
void
|
||||
foo (B n)
|
||||
{
|
||||
extern void bar (int [][n]);
|
||||
}
|
Loading…
Add table
Reference in a new issue