aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorDodji Seketeli <dseketel@redhat.com>2008-07-16 23:44:02 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2008-07-17 01:44:02 +0200
commitecba6c56dbf5914ef24bcce66db3c4cffcd30e22 (patch)
treeaa1a421373609e8d5b06caf8be49f16a831f2782 /gcc/testsuite
parent7386e3ee260414735222ea6559f3bb94ecd011f9 (diff)
downloadgcc-ecba6c56dbf5914ef24bcce66db3c4cffcd30e22.zip
gcc-ecba6c56dbf5914ef24bcce66db3c4cffcd30e22.tar.gz
gcc-ecba6c56dbf5914ef24bcce66db3c4cffcd30e22.tar.bz2
re PR c++/13699 (Extern "C" routine in different namespaces accepted with different exception signature)
2008-07-16 Dodji Seketeli <dseketel@redhat.com> PR c++/13699 * gcc/cp/name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function. (pushdecl_maybe_friend): Check if a redeclaration of extern C function complies with exception specification constraints. From-SVN: r137904
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/lookup/extern-c-redecl.C11
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 33d94fc..76d1751 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-07-16 Dodji Seketeli <dseketel@redhat.com>
+
+ PR c++/13699
+ * g++.dg/lookup/extern-c-redecl.C: New test.
+
2008-07-15 Richard Guenther <rguenther@suse.de>
PR middle-end/36369
diff --git a/gcc/testsuite/g++.dg/lookup/extern-c-redecl.C b/gcc/testsuite/g++.dg/lookup/extern-c-redecl.C
new file mode 100644
index 0000000..31d100a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/extern-c-redecl.C
@@ -0,0 +1,11 @@
+// Contributed by Dodji Seketeli <dseketel@redhat.com>
+// Origin: PR c++/13699
+// { dg-do compile }
+
+namespace A {
+ extern "C" void foo_func () throw(); // { dg-error "conflicts" }
+}
+// next line should trigger an error because
+// it conflicts with previous declaration of foo_func (), due to
+// different exception specifications.
+extern "C" void foo_func (); // { dg-error "C language|exception specifications" }