summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/integrate.c30
-rw-r--r--gcc/tree-inline.c16
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;