aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2013-04-08 17:16:09 -0400
committerJason Merrill <jason@gcc.gnu.org>2013-04-08 17:16:09 -0400
commita0c06853a61384575e3af2415558363c33ffd808 (patch)
tree9fb48e594484c5c7c68e5223259f1cdcb3e62495 /gcc
parent9fb6b620f09541d0f00e1e2f34de5401b716741f (diff)
downloadgcc-a0c06853a61384575e3af2415558363c33ffd808.zip
gcc-a0c06853a61384575e3af2415558363c33ffd808.tar.gz
gcc-a0c06853a61384575e3af2415558363c33ffd808.tar.bz2
re PR c++/56838 (GCC svn doesn't compile libreoffice 4.0.1.2)
PR c++/56838 PR c++/17232 * typeck2.c (abstract_virtuals_error_sfinae): Disable complete_type again. From-SVN: r197613
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/typeck2.c4
-rw-r--r--gcc/testsuite/g++.dg/template/abstract-dr337.C4
3 files changed, 13 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 8b9bf35..0604b55 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2013-04-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/56838
+ PR c++/17232
+ * typeck2.c (abstract_virtuals_error_sfinae): Disable
+ complete_type again.
+
2013-04-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/56871
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index d9efafb..5c2b1b2 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -265,9 +265,13 @@ abstract_virtuals_error_sfinae (tree decl, tree type, abstract_class_use use,
return 0;
type = TYPE_MAIN_VARIANT (type);
+#if 0
+ /* Instantiation here seems to be required by the standard,
+ but breaks e.g. boost::bind. FIXME! */
/* In SFINAE, non-N3276 context, force instantiation. */
if (!(complain & (tf_error|tf_decltype)))
complete_type (type);
+#endif
/* If the type is incomplete, we register it within a hash table,
so that we can check again once it is completed. This makes sense
diff --git a/gcc/testsuite/g++.dg/template/abstract-dr337.C b/gcc/testsuite/g++.dg/template/abstract-dr337.C
index 6905262..4f66c1c 100644
--- a/gcc/testsuite/g++.dg/template/abstract-dr337.C
+++ b/gcc/testsuite/g++.dg/template/abstract-dr337.C
@@ -6,8 +6,8 @@ class A {
};
template<typename T>
-void g(T (*a)[1]) {} // { dg-error "abstract" "" }
+void g(T (*a)[1]) {} // { dg-error "abstract" "" { xfail *-*-* } }
int main() {
- g<A<int> >(0); // { dg-error "no matching function" }
+ g<A<int> >(0); // { dg-error "no matching function" "" { xfail *-*-* } }
}