gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for -fstack-reuse=none, or for volatile vars etc.
* gimplify.c (gimplify_bind_expr): Handle oacc_declare_returns even for -fstack-reuse=none, or for volatile vars etc. From-SVN: r241407
This commit is contained in:
parent
e2ce9e83f7
commit
f9faea3725
|
@ -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>
|
2016-10-21 David Malcolm <dmalcolm@redhat.com>
|
||||||
|
|
||||||
* print-rtl-function.c (flag_compact): Move extern decl to...
|
* print-rtl-function.c (flag_compact): Move extern decl to...
|
||||||
|
|
|
@ -1192,21 +1192,24 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p)
|
||||||
{
|
{
|
||||||
if (VAR_P (t)
|
if (VAR_P (t)
|
||||||
&& !is_global_var (t)
|
&& !is_global_var (t)
|
||||||
&& DECL_CONTEXT (t) == current_function_decl
|
&& 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)
|
|
||||||
{
|
{
|
||||||
tree clobber = build_constructor (TREE_TYPE (t), NULL);
|
if (!DECL_HARD_REGISTER (t)
|
||||||
gimple *clobber_stmt;
|
&& !TREE_THIS_VOLATILE (t)
|
||||||
TREE_THIS_VOLATILE (clobber) = 1;
|
&& !DECL_HAS_VALUE_EXPR_P (t)
|
||||||
clobber_stmt = gimple_build_assign (t, clobber);
|
/* Only care for variables that have to be in memory. Others
|
||||||
gimple_set_location (clobber_stmt, end_locus);
|
will be rewritten into SSA names, hence moved to the
|
||||||
gimplify_seq_add_stmt (&cleanup, clobber_stmt);
|
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)
|
if (flag_openacc && oacc_declare_returns != NULL)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue