diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2005-08-10 00:20:32 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2005-08-10 00:20:32 +0000 |
commit | a23e08d92d597ede6446b7c8e4925a91408d52ed (patch) | |
tree | 2c97c09845d1a901d97fa490fcd0c5553efd390e /gcc/cp/decl.c | |
parent | e04f4a0c4da5a469605fe1822aeb99f224cf51dd (diff) | |
download | gcc-a23e08d92d597ede6446b7c8e4925a91408d52ed.zip gcc-a23e08d92d597ede6446b7c8e4925a91408d52ed.tar.gz gcc-a23e08d92d597ede6446b7c8e4925a91408d52ed.tar.bz2 |
re PR c++/20646 (ICE on illegal code: "extern static" struct member)
PR c++/20646
* decl.c (grokdeclarator): Reset storage_class after error.
* g++.dg/other/mult-stor1.C: New test.
From-SVN: r102935
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 99a1830..e2bd165 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -7064,7 +7064,10 @@ grokdeclarator (const cp_declarator *declarator, /* Warn about storage classes that are invalid for certain kinds of declarations (parameters, typenames, etc.). */ if (declspecs->multiple_storage_classes_p) - error ("multiple storage classes in declaration of %qs", name); + { + error ("multiple storage classes in declaration of %qs", name); + storage_class = sc_none; + } else if (thread_p && ((storage_class && storage_class != sc_extern |