aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-03-01 14:40:33 -0500
committerJason Merrill <jason@gcc.gnu.org>2014-03-01 14:40:33 -0500
commitfe96264ffc4bbbe1516f9c59cb2d4a689fbf5f24 (patch)
treeaa70dbc27374eb7934316643b6f873ae29319d6b /gcc
parentabb839ecacf4034ccb8376e4ab96e522287ff126 (diff)
downloadgcc-fe96264ffc4bbbe1516f9c59cb2d4a689fbf5f24.zip
gcc-fe96264ffc4bbbe1516f9c59cb2d4a689fbf5f24.tar.gz
gcc-fe96264ffc4bbbe1516f9c59cb2d4a689fbf5f24.tar.bz2
re PR c++/60379 (pugixml build failure caused by r207001)
PR c++/60379 * semantics.c (begin_maybe_infinite_loop): Use fold_non_dependent_expr_sfinae. From-SVN: r208247
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/semantics.c2
-rw-r--r--gcc/testsuite/g++.dg/template/loop1.C9
3 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 939f5e1..9e97f33 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-03-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/60379
+ * semantics.c (begin_maybe_infinite_loop): Use
+ fold_non_dependent_expr_sfinae.
+
2014-02-28 Jason Merrill <jason@redhat.com>
PR c++/58845
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 9c1c29d..eaeeb24 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -503,7 +503,7 @@ begin_maybe_infinite_loop (tree cond)
bool maybe_infinite = true;
if (cond)
{
- cond = fold_non_dependent_expr (cond);
+ cond = fold_non_dependent_expr_sfinae (cond, tf_none);
cond = maybe_constant_value (cond);
maybe_infinite = integer_nonzerop (cond);
}
diff --git a/gcc/testsuite/g++.dg/template/loop1.C b/gcc/testsuite/g++.dg/template/loop1.C
new file mode 100644
index 0000000..aa6d177
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/loop1.C
@@ -0,0 +1,9 @@
+// PR c++/60379
+
+template <int> struct A {
+ void m_fn1(int p1) {
+ int *a;
+ while (p1 && *static_cast<int *>(static_cast<void *>(a)))
+ ;
+ }
+};