diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1994-08-19 17:20:05 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1994-08-19 17:20:05 -0700 |
commit | e24fa5340495964dc7abda7e3d0809dbb24e048b (patch) | |
tree | cff6b87cd32a17d2d4c54960b2087b9f13901596 /gcc | |
parent | b6d5307feb2f1fd16042a7689f0b6ed7ec198c98 (diff) | |
download | gcc-e24fa5340495964dc7abda7e3d0809dbb24e048b.zip gcc-e24fa5340495964dc7abda7e3d0809dbb24e048b.tar.gz gcc-e24fa5340495964dc7abda7e3d0809dbb24e048b.tar.bz2 |
(build_type_variant): Only return existing type if it
also has the same TYPE_NAME.
From-SVN: r7954
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree.c | 21 |
1 files changed, 8 insertions, 13 deletions
@@ -2802,19 +2802,14 @@ build_type_variant (type, constp, volatilep) constp = !!constp; volatilep = !!volatilep; - /* If not generating auxiliary info, search the chain of variants to see - if there is already one there just like the one we need to have. If so, - use that existing one. - - We don't do this in the case where we are generating aux info because - in that case we want each typedef names to get it's own distinct type - node, even if the type of this new typedef is the same as some other - (existing) type. */ - - if (!flag_gen_aux_info) - for (t = TYPE_MAIN_VARIANT(type); t; t = TYPE_NEXT_VARIANT (t)) - if (constp == TYPE_READONLY (t) && volatilep == TYPE_VOLATILE (t)) - return t; + /* Search the chain of variants to see if there is already one there just + like the one we need to have. If so, use that existing one. We must + preserve the TYPE_NAME, since there is code that depends on this. */ + + for (t = TYPE_MAIN_VARIANT(type); t; t = TYPE_NEXT_VARIANT (t)) + if (constp == TYPE_READONLY (t) && volatilep == TYPE_VOLATILE (t) + && TYPE_NAME (t) == TYPE_NAME (type)) + return t; /* We need a new one. */ |