diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/integrate.c | 30 | ||||
-rw-r--r-- | gcc/tree-inline.c | 16 |
3 files changed, 11 insertions, 41 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c220812d4a..12aac93f7ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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> * tree-ssa-ccp.c (latticevalue): Add UNKNOWN_VAL. diff --git a/gcc/integrate.c b/gcc/integrate.c index bd96be80082..2fa5164bec5 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -116,36 +116,14 @@ copy_decl_for_inlining (tree decl, tree from_fn, tree to_fn) /* Copy the declaration. */ if (TREE_CODE (decl) == PARM_DECL || TREE_CODE (decl) == RESULT_DECL) { - tree type; - 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); + tree type = TREE_TYPE (decl); /* For a parameter or result, we must make an equivalent VAR_DECL, not a new PARM_DECL. */ copy = build_decl (VAR_DECL, DECL_NAME (decl), type); - if (!invisiref) - { - TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (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; - } + TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (decl); + TREE_READONLY (copy) = TREE_READONLY (decl); + TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (decl); } else { diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 66ed1317459..6412ce0306d 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -693,7 +693,6 @@ setup_one_parameter (inline_data *id, tree p, tree value, tree fn, { tree init_stmt; tree var; - tree var_sub; /* If the parameter is never assigned to, we may not need to 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, function. */ 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; that way, when the PARM_DECL is encountered, it will be automatically replaced by the VAR_DECL. */ - insert_decl_map (id, p, var_sub); + insert_decl_map (id, p, var); /* Declare this new variable. */ TREE_CHAIN (var) = *vars; |