mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 06:49:09 +02:00
PR c/123716: Fix an unexpected error_mark_node ICE.
This patch resolves the P4 regression PR c/123716. 2026-02-22 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog PR c/123716 * tree.cc (tree_nop_conversion_p): Move sanity checks on inner_type to here... (tree_nop_conversion): ... from here. gcc/testsuite/ChangeLog PR c/123716 * gcc.dg/pr123716.c: New test case.
This commit is contained in:
9
gcc/testsuite/gcc.dg/pr123716.c
Normal file
9
gcc/testsuite/gcc.dg/pr123716.c
Normal file
@@ -0,0 +1,9 @@
|
||||
/* PR c/123716 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
int f(unsigned s)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < s; ++i);
|
||||
unsigned i[1]; /* { dg-error "conflicting type" } */
|
||||
}
|
||||
@@ -12333,6 +12333,9 @@ block_ultimate_origin (const_tree block)
|
||||
bool
|
||||
tree_nop_conversion_p (const_tree outer_type, const_tree inner_type)
|
||||
{
|
||||
if (!inner_type || inner_type == error_mark_node)
|
||||
return false;
|
||||
|
||||
/* Do not strip casts into or out of differing address spaces. */
|
||||
if (POINTER_TYPE_P (outer_type)
|
||||
&& TYPE_ADDR_SPACE (TREE_TYPE (outer_type)) != ADDR_SPACE_GENERIC)
|
||||
@@ -12382,8 +12385,6 @@ tree_nop_conversion (const_tree exp)
|
||||
|
||||
outer_type = TREE_TYPE (exp);
|
||||
inner_type = TREE_TYPE (TREE_OPERAND (exp, 0));
|
||||
if (!inner_type || inner_type == error_mark_node)
|
||||
return false;
|
||||
|
||||
return tree_nop_conversion_p (outer_type, inner_type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user