aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2014-12-12 18:14:54 +0100
committerKai Tietz <ktietz@gcc.gnu.org>2014-12-12 18:14:54 +0100
commit5a5e54cdf872f476a2412f317f8744b13774b3ff (patch)
tree97b294078eb7ec295fe1eb9cc5c646770d10fbcd /gcc
parent32b671f05ae8e4528a980dd4283ea637ad5ca1c4 (diff)
downloadgcc-5a5e54cdf872f476a2412f317f8744b13774b3ff.zip
gcc-5a5e54cdf872f476a2412f317f8744b13774b3ff.tar.gz
gcc-5a5e54cdf872f476a2412f317f8744b13774b3ff.tar.bz2
re PR c++/63996 (Infinite loop in invalid C++14 constexpr fn)
PR c++/63996 * constexpr.c (cxx_eval_loop_expr): Don't loop endless on none-constant expression. From-SVN: r218682
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/constexpr.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1809b26..3de8861 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-12 Kai Tietz <ktietz@redhat.com>
+
+ PR c++/63996
+ * constexpr.c (cxx_eval_loop_expr): Don't loop
+ endless on none-constant expression.
+
2014-12-12 Jason Merrill <jason@redhat.com>
PR c++/61402
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index 9426d85..732a79c 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -2841,7 +2841,7 @@ cxx_eval_loop_expr (const constexpr_ctx *ctx, tree t,
{
cxx_eval_statement_list (ctx, body,
non_constant_p, overflow_p, jump_target);
- if (returns (jump_target) || breaks (jump_target))
+ if (returns (jump_target) || breaks (jump_target) || *non_constant_p)
break;
}
if (breaks (jump_target))