mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-09 20:31:36 +08:00
tree-inline.c (copy_body_r): Explicitly copy a constant if the type will be remapped.
* tree-inline.c (copy_body_r): Explicitly copy a constant if the type will be remapped. From-SVN: r91192
This commit is contained in:
parent
8adb21944e
commit
bb04998ab7
@ -1,3 +1,8 @@
|
||||
2004-11-24 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* tree-inline.c (copy_body_r): Explicitly copy a constant if the
|
||||
type will be remapped.
|
||||
|
||||
2004-11-24 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* c-opts.c (c_common_post_options): Don't clear
|
||||
|
@ -516,6 +516,25 @@ copy_body_r (tree *tp, int *walk_subtrees, void *data)
|
||||
else if (TYPE_P (*tp))
|
||||
*tp = remap_type (*tp, id);
|
||||
|
||||
/* If this is a constant, we have to copy the node iff the type will be
|
||||
remapped. copy_tree_r will not copy a constant. */
|
||||
else if (TREE_CODE_CLASS (TREE_CODE (*tp)) == tcc_constant)
|
||||
{
|
||||
tree new_type = remap_type (TREE_TYPE (*tp), id);
|
||||
|
||||
if (new_type == TREE_TYPE (*tp))
|
||||
*walk_subtrees = 0;
|
||||
|
||||
else if (TREE_CODE (*tp) == INTEGER_CST)
|
||||
*tp = build_int_cst_wide (new_type, TREE_INT_CST_LOW (*tp),
|
||||
TREE_INT_CST_HIGH (*tp));
|
||||
else
|
||||
{
|
||||
*tp = copy_node (*tp);
|
||||
TREE_TYPE (*tp) = new_type;
|
||||
}
|
||||
}
|
||||
|
||||
/* Otherwise, just copy the node. Note that copy_tree_r already
|
||||
knows not to copy VAR_DECLs, etc., so this is safe. */
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user