gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for -fstack-reuse...
authorJakub Jelinek <jakub@redhat.com>
Fri, 21 Oct 2016 15:09:49 +0000 (17:09 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 21 Oct 2016 15:09:49 +0000 (17:09 +0200)
* gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns
even for -fstack-reuse=none, or for volatile vars etc.

From-SVN: r241407

gcc/ChangeLog
gcc/gimplify.c

index 9cce6aa0642fcdc5fc78bb94d15d184b05caab02..3c819032613e68a126bd2080bb77fa504ceaabb2 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns
+       even for -fstack-reuse=none, or for volatile vars etc.
+
 2016-10-21  David Malcolm  <dmalcolm@redhat.com>
 
        * print-rtl-function.c (flag_compact): Move extern decl to...
index 254dc735f0f23dcdaa5e4ef0836f15c673c7514d..d855c6700121d23d02391531e813e05719c6a20f 100644 (file)
@@ -1192,21 +1192,24 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p)
     {
       if (VAR_P (t)
          && !is_global_var (t)
-         && DECL_CONTEXT (t) == current_function_decl
-         && !DECL_HARD_REGISTER (t)
-         && !TREE_THIS_VOLATILE (t)
-         && !DECL_HAS_VALUE_EXPR_P (t)
-         /* Only care for variables that have to be in memory.  Others
-            will be rewritten into SSA names, hence moved to the top-level.  */
-         && !is_gimple_reg (t)
-         && flag_stack_reuse != SR_NONE)
+         && DECL_CONTEXT (t) == current_function_decl)
        {
-         tree clobber = build_constructor (TREE_TYPE (t), NULL);
-         gimple *clobber_stmt;
-         TREE_THIS_VOLATILE (clobber) = 1;
-         clobber_stmt = gimple_build_assign (t, clobber);
-         gimple_set_location (clobber_stmt, end_locus);
-         gimplify_seq_add_stmt (&cleanup, clobber_stmt);
+         if (!DECL_HARD_REGISTER (t)
+             && !TREE_THIS_VOLATILE (t)
+             && !DECL_HAS_VALUE_EXPR_P (t)
+             /* Only care for variables that have to be in memory.  Others
+                will be rewritten into SSA names, hence moved to the
+                top-level.  */
+             && !is_gimple_reg (t)
+             && flag_stack_reuse != SR_NONE)
+           {
+             tree clobber = build_constructor (TREE_TYPE (t), NULL);
+             gimple *clobber_stmt;
+             TREE_THIS_VOLATILE (clobber) = 1;
+             clobber_stmt = gimple_build_assign (t, clobber);
+             gimple_set_location (clobber_stmt, end_locus);
+             gimplify_seq_add_stmt (&cleanup, clobber_stmt);
+           }
 
          if (flag_openacc && oacc_declare_returns != NULL)
            {