diff options
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index d9aeefe..622ae18 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -271,6 +271,7 @@ remap_type (tree type, inline_data *id) t = TYPE_MIN_VALUE (new); if (t && TREE_CODE (t) != INTEGER_CST) walk_tree (&TYPE_MIN_VALUE (new), copy_body_r, id, NULL); + t = TYPE_MAX_VALUE (new); if (t && TREE_CODE (t) != INTEGER_CST) walk_tree (&TYPE_MAX_VALUE (new), copy_body_r, id, NULL); @@ -278,14 +279,14 @@ remap_type (tree type, inline_data *id) case POINTER_TYPE: TREE_TYPE (new) = t = remap_type (TREE_TYPE (new), id); - if (TYPE_MODE (new) == ptr_mode) - TYPE_POINTER_TO (t) = new; + TYPE_NEXT_PTR_TO (new) = TYPE_POINTER_TO (t); + TYPE_POINTER_TO (t) = new; return new; case REFERENCE_TYPE: TREE_TYPE (new) = t = remap_type (TREE_TYPE (new), id); - if (TYPE_MODE (new) == ptr_mode) - TYPE_REFERENCE_TO (t) = new; + TYPE_NEXT_REF_TO (new) = TYPE_REFERENCE_TO (t); + TYPE_REFERENCE_TO (t) = new; return new; case METHOD_TYPE: @@ -2082,6 +2083,7 @@ copy_tree_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) || TREE_CODE_CLASS (code) == 'c' || code == TREE_LIST || code == TREE_VEC + || code == TYPE_DECL || lang_hooks.tree_inlining.tree_chain_matters_p (*tp)) { /* Because the chain gets clobbered when we make a copy, we save it |