lto.c (remember_with_vars): Also fixup INTEGER_CST.
* lto/lto.c (remember_with_vars): Also fixup INTEGER_CST. (fixup_integer_cst): New functoin. (lto_ft_type): Fixup BASETYPE of methods and offsets. From-SVN: r192214
This commit is contained in:
parent
7b19209f29
commit
2512a443d6
|
@ -1,3 +1,9 @@
|
|||
2012-10-08 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* lto/lto.c (remember_with_vars): Also fixup INTEGER_CST.
|
||||
(fixup_integer_cst): New functoin.
|
||||
(lto_ft_type): Fixup BASETYPE of methods and offsets.
|
||||
|
||||
2012-10-07 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* lto.c (read_cgraph_and_symbols): Release type merging hash early;
|
||||
|
|
|
@ -1408,11 +1408,36 @@ remember_with_vars (tree t)
|
|||
(tt) = GIMPLE_REGISTER_TYPE (tt); \
|
||||
if (VAR_OR_FUNCTION_DECL_P (tt) && TREE_PUBLIC (tt)) \
|
||||
remember_with_vars (t); \
|
||||
if (TREE_CODE (tt) == INTEGER_CST) \
|
||||
(tt) = fixup_integer_cst (tt); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
static void lto_fixup_types (tree);
|
||||
|
||||
/* Return integer_cst T with updated type. */
|
||||
|
||||
static tree
|
||||
fixup_integer_cst (tree t)
|
||||
{
|
||||
tree type = GIMPLE_REGISTER_TYPE (TREE_TYPE (t));
|
||||
|
||||
if (type == TREE_TYPE (t))
|
||||
return t;
|
||||
|
||||
/* If overflow was set, streamer_read_integer_cst
|
||||
produced local copy of T. */
|
||||
if (TREE_OVERFLOW (t))
|
||||
{
|
||||
TREE_TYPE (t) = type;
|
||||
return t;
|
||||
}
|
||||
else
|
||||
/* Otherwise produce new shared node for the new type. */
|
||||
return build_int_cst_wide (type, TREE_INT_CST_LOW (t),
|
||||
TREE_INT_CST_HIGH (t));
|
||||
}
|
||||
|
||||
/* Fix up fields of a tree_typed T. */
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue