gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.
authorJason Merrill <jason@redhat.com>
Wed, 22 May 2019 22:00:14 +0000 (18:00 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 22 May 2019 22:00:14 +0000 (18:00 -0400)
* gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.

The front end shouldn't produce a GENERIC COND_EXPR of TREE_ADDRESSABLE
type.

From-SVN: r271524

gcc/ChangeLog
gcc/gimplify.c

index 5ee574683fc1f47eb66dce27dd9e79540ffc16ed..dee55155ca5cd774a9d7de9792a32b17a855ace0 100644 (file)
@@ -1,3 +1,7 @@
+2019-05-22  Jason Merrill  <jason@redhat.com>
+
+       * gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.
+
 2019-05-22  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/88483
index 5bacb255ba75901a3cd95e3b99b1f274216bf85d..6905165ad330302f051de192c99975222d8549ad 100644 (file)
@@ -3990,10 +3990,12 @@ gimplify_cond_expr (tree *expr_p, gimple_seq *pre_p, fallback_t fallback)
       tree result;
 
       /* If either an rvalue is ok or we do not require an lvalue, create the
-        temporary.  But we cannot do that if the type is addressable.  */
+        temporary.  We cannot do that if the type is addressable, but
+        that should have been avoided before we got here.  */
       if (((fallback & fb_rvalue) || !(fallback & fb_lvalue))
-         && !TREE_ADDRESSABLE (type))
+         && (flag_checking || !TREE_ADDRESSABLE (type)))
        {
+         gcc_assert (!TREE_ADDRESSABLE (type));
          if (gimplify_ctxp->allow_rhs_cond_expr
              /* If either branch has side effects or could trap, it can't be
                 evaluated unconditionally.  */