aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-complex.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-complex.c')
-rw-r--r--gcc/tree-complex.c8
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);