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:
Jan Hubicka 2012-10-08 18:04:31 +02:00 committed by Jan Hubicka
parent 7b19209f29
commit 2512a443d6
2 changed files with 31 additions and 0 deletions

View File

@ -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;

View File

@ -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