aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom Tromey <tromey@gcc.gnu.org>2007-11-08 19:50:38 +0000
committerTom Tromey <tromey@gcc.gnu.org>2007-11-08 19:50:38 +0000
commitc02cdc25dc7f5970b33cbe38f2c15ebb7e0fa58c (patch)
tree0a5e16baa84a07f3b09f1b244bbf33b39991400f /gcc
parent061c5ee4279886cc47d67c75503b736ec45a4234 (diff)
downloadgcc-c02cdc25dc7f5970b33cbe38f2c15ebb7e0fa58c.zip
gcc-c02cdc25dc7f5970b33cbe38f2c15ebb7e0fa58c.tar.gz
gcc-c02cdc25dc7f5970b33cbe38f2c15ebb7e0fa58c.tar.bz2
re PR c++/30297 (ICE with extern "C" and inheritance)
gcc/cp 2007-11-08 Andrew Pinski <pinskia@gmail.com> PR c++/30297: * tree.c (decl_linkage): Fields have no linkage. gcc/testsuite PR c++/30297: * g++.dg/inherit/pr30297.C: New file. From-SVN: r130018
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/tree.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/inherit/pr30297.C11
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e28f582..3a99fba 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-08 Andrew Pinski <pinskia@gmail.com>
+
+ PR c++/30297:
+ * tree.c (decl_linkage): Fields have no linkage.
+
2007-11-08 Daniel Jacobowitz <dan@codesourcery.com>
* class.c (build_ctor_vtbl_group): Lay out the new type and decl.
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index c2b4af0..2a7cd3a 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -2493,6 +2493,10 @@ decl_linkage (tree decl)
if (!DECL_NAME (decl))
return lk_none;
+ /* Fields have no linkage. */
+ if (TREE_CODE (decl) == FIELD_DECL)
+ return lk_none;
+
/* Things that are TREE_PUBLIC have external linkage. */
if (TREE_PUBLIC (decl))
return lk_external;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e04e5e1..ede1c09 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-08 Tom Tromey <tromey@redhat.com>
+
+ PR c++/30297:
+ * g++.dg/inherit/pr30297.C: New file.
+
2007-11-08 Danny Smith <dannysmith@users.sourceforge.net>
* gcc.dg/compat/struct-layout-1_generate.c (dg-options) Add
diff --git a/gcc/testsuite/g++.dg/inherit/pr30297.C b/gcc/testsuite/g++.dg/inherit/pr30297.C
new file mode 100644
index 0000000..222d9ab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/pr30297.C
@@ -0,0 +1,11 @@
+// Regression test for ICE from PR c++/30297.
+
+struct A
+{
+ int i;
+};
+
+extern "C" struct B : A
+{
+ A::i;
+};