Commit 669d6ecc by Jason Merrill Committed by Jason Merrill

integrate.c (copy_decl_for_inlining): Remove invisible reference handling.

        * integrate.c (copy_decl_for_inlining): Remove invisible reference
        handling.
        * tree-inline.c (setup_one_parameter): Likewise.

From-SVN: r85057
parent 92976927
2004-07-22 Jason Merrill <jason@redhat.com>
* integrate.c (copy_decl_for_inlining): Remove invisible reference
handling.
* tree-inline.c (setup_one_parameter): Likewise.
2004-07-22 Brian Booth <bbooth@redhat.com> 2004-07-22 Brian Booth <bbooth@redhat.com>
* tree-ssa-ccp.c (latticevalue): Add UNKNOWN_VAL. * tree-ssa-ccp.c (latticevalue): Add UNKNOWN_VAL.
......
...@@ -116,36 +116,14 @@ copy_decl_for_inlining (tree decl, tree from_fn, tree to_fn) ...@@ -116,36 +116,14 @@ copy_decl_for_inlining (tree decl, tree from_fn, tree to_fn)
/* Copy the declaration. */ /* Copy the declaration. */
if (TREE_CODE (decl) == PARM_DECL || TREE_CODE (decl) == RESULT_DECL) if (TREE_CODE (decl) == PARM_DECL || TREE_CODE (decl) == RESULT_DECL)
{ {
tree type; tree type = TREE_TYPE (decl);
int invisiref = 0;
/* See if the frontend wants to pass this by invisible reference. */
if (TREE_CODE (decl) == PARM_DECL
&& DECL_ARG_TYPE (decl) != TREE_TYPE (decl)
&& POINTER_TYPE_P (DECL_ARG_TYPE (decl))
&& TREE_TYPE (DECL_ARG_TYPE (decl)) == TREE_TYPE (decl))
{
invisiref = 1;
type = DECL_ARG_TYPE (decl);
}
else
type = TREE_TYPE (decl);
/* For a parameter or result, we must make an equivalent VAR_DECL, not a /* For a parameter or result, we must make an equivalent VAR_DECL, not a
new PARM_DECL. */ new PARM_DECL. */
copy = build_decl (VAR_DECL, DECL_NAME (decl), type); copy = build_decl (VAR_DECL, DECL_NAME (decl), type);
if (!invisiref) TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (decl);
{ TREE_READONLY (copy) = TREE_READONLY (decl);
TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (decl); TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (decl);
TREE_READONLY (copy) = TREE_READONLY (decl);
TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (decl);
}
else
{
TREE_ADDRESSABLE (copy) = 0;
TREE_READONLY (copy) = 1;
TREE_THIS_VOLATILE (copy) = 0;
}
} }
else else
{ {
......
...@@ -693,7 +693,6 @@ setup_one_parameter (inline_data *id, tree p, tree value, tree fn, ...@@ -693,7 +693,6 @@ setup_one_parameter (inline_data *id, tree p, tree value, tree fn,
{ {
tree init_stmt; tree init_stmt;
tree var; tree var;
tree var_sub;
/* If the parameter is never assigned to, we may not need to /* If the parameter is never assigned to, we may not need to
create a new variable here at all. Instead, we may be able create a new variable here at all. Instead, we may be able
...@@ -724,23 +723,10 @@ setup_one_parameter (inline_data *id, tree p, tree value, tree fn, ...@@ -724,23 +723,10 @@ setup_one_parameter (inline_data *id, tree p, tree value, tree fn,
function. */ function. */
var = copy_decl_for_inlining (p, fn, VARRAY_TREE (id->fns, 0)); var = copy_decl_for_inlining (p, fn, VARRAY_TREE (id->fns, 0));
/* See if the frontend wants to pass this by invisible reference. If
so, our new VAR_DECL will have REFERENCE_TYPE, and we need to
replace uses of the PARM_DECL with dereferences. */
if (TREE_TYPE (var) != TREE_TYPE (p)
&& POINTER_TYPE_P (TREE_TYPE (var))
&& TREE_TYPE (TREE_TYPE (var)) == TREE_TYPE (p))
{
insert_decl_map (id, var, var);
var_sub = build1 (INDIRECT_REF, TREE_TYPE (p), var);
}
else
var_sub = var;
/* Register the VAR_DECL as the equivalent for the PARM_DECL; /* Register the VAR_DECL as the equivalent for the PARM_DECL;
that way, when the PARM_DECL is encountered, it will be that way, when the PARM_DECL is encountered, it will be
automatically replaced by the VAR_DECL. */ automatically replaced by the VAR_DECL. */
insert_decl_map (id, p, var_sub); insert_decl_map (id, p, var);
/* Declare this new variable. */ /* Declare this new variable. */
TREE_CHAIN (var) = *vars; TREE_CHAIN (var) = *vars;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment