From 8057f9aa1f7e70490064de796d7a8d42d446caf8 Mon Sep 17 00:00:00 2001 From: Martin Uecker Date: Fri, 5 Apr 2024 12:14:56 +0200 Subject: [PATCH] Revert "Fix ICE with -g and -std=c23 related to incomplete types [PR114361]" This reverts commit 871bb5ad2dd56343d80b6a6d269e85efdc9999e5 because it breaks LTO and needs a bit more work. See PR 114574. --- gcc/c/c-decl.cc | 1 - gcc/testsuite/gcc.dg/c23-tag-incomplete-1.c | 14 -------------- gcc/testsuite/gcc.dg/c23-tag-incomplete-2.c | 13 ------------- gcc/testsuite/gcc.dg/pr114361.c | 11 ----------- 4 files changed, 39 deletions(-) delete mode 100644 gcc/testsuite/gcc.dg/c23-tag-incomplete-1.c delete mode 100644 gcc/testsuite/gcc.dg/c23-tag-incomplete-2.c delete mode 100644 gcc/testsuite/gcc.dg/pr114361.c diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index f2083b9d96f..c747abe9f4e 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -9722,7 +9722,6 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes, C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t); C_TYPE_VARIABLY_MODIFIED (x) = C_TYPE_VARIABLY_MODIFIED (t); C_TYPE_INCOMPLETE_VARS (x) = NULL_TREE; - TYPE_CANONICAL (x) = TYPE_CANONICAL (t); } /* Update type location to the one of the definition, instead of e.g. diff --git a/gcc/testsuite/gcc.dg/c23-tag-incomplete-1.c b/gcc/testsuite/gcc.dg/c23-tag-incomplete-1.c deleted file mode 100644 index 82d652569e9..00000000000 --- a/gcc/testsuite/gcc.dg/c23-tag-incomplete-1.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } - * { dg-options "-std=c23 -g" } */ - -struct a; -typedef struct a b; - -void g() { - struct a { b* x; }; -} - -struct a { b* x; }; - - - diff --git a/gcc/testsuite/gcc.dg/c23-tag-incomplete-2.c b/gcc/testsuite/gcc.dg/c23-tag-incomplete-2.c deleted file mode 100644 index bc47a04ece5..00000000000 --- a/gcc/testsuite/gcc.dg/c23-tag-incomplete-2.c +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } - * { dg-options "-std=c23 -g" } */ - -struct a; -typedef struct a b; - -void f() { - extern struct a { b* x; } t; -} - -extern struct a { b* x; } t; - - diff --git a/gcc/testsuite/gcc.dg/pr114361.c b/gcc/testsuite/gcc.dg/pr114361.c deleted file mode 100644 index 0f3feb53566..00000000000 --- a/gcc/testsuite/gcc.dg/pr114361.c +++ /dev/null @@ -1,11 +0,0 @@ -/* PR c/114361 */ -/* { dg-do compile } */ -/* { dg-options "-std=gnu23 -g" } */ - -void f() -{ - typedef struct foo bar; - typedef __typeof( ({ (struct foo { bar *x; }){ }; }) ) wuz; - struct foo { wuz *x; }; -} -