diff options
Diffstat (limited to 'gcc/tree-complex.c')
-rw-r--r-- | gcc/tree-complex.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index a34d048..c6c5227 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -488,7 +488,10 @@ get_component_ssa_name (tree ssa_name, bool imag_p) ret = VEC_index (tree, complex_ssa_name_components, ssa_name_index); if (ret == NULL) { - ret = get_component_var (SSA_NAME_VAR (ssa_name), imag_p); + if (SSA_NAME_VAR (ssa_name)) + ret = get_component_var (SSA_NAME_VAR (ssa_name), imag_p); + else + ret = TREE_TYPE (TREE_TYPE (ssa_name)); ret = make_ssa_name (ret, NULL); /* Copy some properties from the original. In particular, whether it @@ -549,7 +552,8 @@ set_component_ssa_name (tree ssa_name, bool imag_p, tree value) { /* Replace an anonymous base value with the variable from cvc_lookup. This should result in better debug info. */ - if (DECL_IGNORED_P (SSA_NAME_VAR (value)) + if (SSA_NAME_VAR (ssa_name) + && (!SSA_NAME_VAR (value) || DECL_IGNORED_P (SSA_NAME_VAR (value))) && !DECL_IGNORED_P (SSA_NAME_VAR (ssa_name))) { comp = get_component_var (SSA_NAME_VAR (ssa_name), imag_p); |