re PR c++/63996 (Infinite loop in invalid C++14 constexpr fn)
authorKai Tietz <ktietz@redhat.com>
Fri, 12 Dec 2014 17:14:54 +0000 (18:14 +0100)
committerKai Tietz <ktietz@gcc.gnu.org>
Fri, 12 Dec 2014 17:14:54 +0000 (18:14 +0100)
PR c++/63996
* constexpr.c (cxx_eval_loop_expr): Don't loop
endless on none-constant expression.

From-SVN: r218682

gcc/cp/ChangeLog
gcc/cp/constexpr.c

index 1809b26a0109379dcc78768c4169db1d86a25a13..3de8861f792de50e34938adc908c386f54ed4e48 100644 (file)
@@ -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
index 9426d8558e2398974705d8fce60d6b8ce29bf626..732a79cdf182bc512ef5b3ace35b0d04cf2682e3 100644 (file)
@@ -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))