* constexpr.c (cxx_eval_outermost_constant_expr): Tweak.
authorJason Merrill <jason@redhat.com>
Tue, 28 Oct 2014 19:37:46 +0000 (15:37 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 28 Oct 2014 19:37:46 +0000 (15:37 -0400)
From-SVN: r216809

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

index 1a2e884a84bc3cef121ee9394c2d9bc1f6fba47f..e1ec24c485aa5b55622ece1efb6b5f1f71b22378 100644 (file)
@@ -1,3 +1,7 @@
+2014-10-28  Jason Merrill  <jason@redhat.com>
+
+       * constexpr.c (cxx_eval_outermost_constant_expr): Tweak.
+
 2014-10-28  Andrew MacLeod  <amacleod@redhat.com>
 
        * call.c: Adjust include files.
index cd10766aebd861fa96bf7cebbdcfd28720af30c2..225a9924e90369ba972f89e640f367b83a2480e9 100644 (file)
@@ -2756,8 +2756,6 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant,
   hash_map<tree,tree> map;
   ctx.values = &map;
   tree type = initialized_type (t);
-  if (!object && TREE_CODE (t) == TARGET_EXPR)
-    object = TARGET_EXPR_SLOT (t);
   tree r = t;
   if (AGGREGATE_TYPE_P (type) || VECTOR_TYPE_P (type))
     {
@@ -2770,6 +2768,8 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant,
         initialized.  */
       ctx.ctor = build_constructor (type, NULL);
       CONSTRUCTOR_NO_IMPLICIT_ZERO (ctx.ctor) = true;
+      if (!object && TREE_CODE (t) == TARGET_EXPR)
+       object = TARGET_EXPR_SLOT (t);
       ctx.object = object;
       if (object)
        gcc_assert (same_type_ignoring_top_level_qualifiers_p