diff options
Diffstat (limited to 'packages/gcc/11.2.0/0012-c-designator-and-anon-struct-PR101767.patch')
-rw-r--r-- | packages/gcc/11.2.0/0012-c-designator-and-anon-struct-PR101767.patch | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/packages/gcc/11.2.0/0012-c-designator-and-anon-struct-PR101767.patch b/packages/gcc/11.2.0/0012-c-designator-and-anon-struct-PR101767.patch deleted file mode 100644 index 65f3237e..00000000 --- a/packages/gcc/11.2.0/0012-c-designator-and-anon-struct-PR101767.patch +++ /dev/null @@ -1,71 +0,0 @@ -From b94c95fc1199bfa2c7ab577921b07ef545976cac Mon Sep 17 00:00:00 2001 -From: Jason Merrill <jason@redhat.com> -Date: Fri, 18 Mar 2022 14:36:19 -0400 -Subject: c++: designator and anon struct [PR101767] - -We found .x in the anonymous struct, but then didn't find .y there; we -should decide that means we're done with the struct rather than that the -code is wrong. - - PR c++/101767 - -gcc/cp/ChangeLog: - - * decl.c (reshape_init_class): Back out of anon struct - if a designator doesn't match. - -gcc/testsuite/ChangeLog: - - * g++.dg/ext/anon-struct10.C: New test. ---- - gcc/cp/decl.c | 5 +++++ - gcc/testsuite/g++.dg/ext/anon-struct10.C | 21 +++++++++++++++++++++ - 2 files changed, 26 insertions(+) - create mode 100644 gcc/testsuite/g++.dg/ext/anon-struct10.C - -diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c -index 41094c891fc..6d3e764fb14 100644 ---- a/gcc/cp/decl.c -+++ b/gcc/cp/decl.c -@@ -6437,6 +6437,11 @@ reshape_init_class (tree type, reshape_iter *d, bool first_initializer_p, - return error_mark_node; - } - -+ if (!field && ANON_AGGR_TYPE_P (type)) -+ /* Apparently the designator isn't for a member of this anonymous -+ struct, so head back to the enclosing class. */ -+ break; -+ - if (!field || TREE_CODE (field) != FIELD_DECL) - { - if (complain & tf_error) -diff --git a/gcc/testsuite/g++.dg/ext/anon-struct10.C b/gcc/testsuite/g++.dg/ext/anon-struct10.C -new file mode 100644 -index 00000000000..9b01bf3fada ---- /dev/null -+++ b/gcc/testsuite/g++.dg/ext/anon-struct10.C -@@ -0,0 +1,21 @@ -+// PR c++/101767 -+// { dg-do compile { target c++11 } } -+// { dg-additional-options "-Wno-pedantic" } -+ -+typedef struct { -+ struct { -+ int x; -+ }; -+ union { -+ int y; -+ float z; -+ }; -+} S; -+ -+void foo(void) -+{ -+ [[maybe_unused]] S a = { -+ .x = 1, -+ .y = 0 -+ }; -+} --- -2.31.1 - |