Simplify types of TYPE_VALUES in enumeral types
authorJan Hubicka <jh@suse.cz>
Tue, 26 May 2020 08:14:38 +0000 (10:14 +0200)
committerJan Hubicka <jh@suse.cz>
Tue, 26 May 2020 08:14:38 +0000 (10:14 +0200)
commit5c8344e7289969e1ee3103beaf9631b284f5ebc3
treec5a1697ecc49aaa82862cb9cd1dca734de44804d
parentf1f862aec2c3b93dbd6adfc35b0e1b6034e59c21
Simplify types of TYPE_VALUES in enumeral types

streaming code assumes that INTEGER_CST never appears in non-trivial component.
This is not true and we sometimes stream such components which sort of silently
works but breaks our IL invariant about tree sharing.  This patch fixes one
instance of this problem where ENUMERAL_TYPE lists all its valids in TYPE_VALUES
that with some FEs (like Ada and C++) are having the enumeral type as a type
while in other FEs (like C) are simple integer types.

I convert them all to integers which also increases chance that they will be
shared with other integer constants at stream time.

gcc/

* tree.c (free_lang_data_in_type): Simpify types of TYPE_VALUES in
enumeral types.
gcc/tree.c