diff options
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 425f92e..d09bf41 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -1972,14 +1972,16 @@ c_build_type_variant (type, constp, volatilep) { if (TREE_CODE (type) == ARRAY_TYPE) { - tree real_main_variant = TYPE_MAIN_VARIANT (type); - push_obstacks (TYPE_OBSTACK (type), TYPE_OBSTACK (type)); type = build_array_type (c_build_type_variant (TREE_TYPE (type), constp, volatilep), TYPE_DOMAIN (type)); - TYPE_MAIN_VARIANT (type) = real_main_variant; pop_obstacks (); + + /* If the old TYPE had variants, we lose them here. However, + since the new TYPE can be in the permanent obstack and the + old one may not be, preserving this chain would cause permanent + objects to point to non-permanent ones. */ } return build_type_variant (type, constp, volatilep); } |