Fix H.J. Lu's alpha-linux bug with TImode constructors.

* expr.c (expand_expr): Remove previous incorrect change.
	If target and slot has no DECL_RTL, then call mark_addressable
	again for the slot after we give it RTL.

From-SVN: r15496
This commit is contained in:
Jim Wilson 1997-09-16 20:59:22 +00:00 committed by Jim Wilson
parent 7d9e0d333c
commit 21002281e5
2 changed files with 17 additions and 7 deletions

View File

@ -1,3 +1,9 @@
Tue Sep 16 11:13:46 1997 Jim Wilson <wilson@cygnus.com>
* expr.c (expand_expr): Remove previous incorrect change.
If target and slot has no DECL_RTL, then call mark_addressable
again for the slot after we give it RTL.
Tue Sep 16 10:14:55 1997 Jeffrey A Law (law@cygnus.com)
* version.c: Bump for snapshot.

View File

@ -6919,11 +6919,6 @@ expand_expr (exp, target, tmode, modifier)
/* All temp slots at this level must not conflict. */
preserve_temp_slots (target);
DECL_RTL (slot) = target;
if (TREE_ADDRESSABLE (slot))
{
TREE_ADDRESSABLE (slot) = 0;
mark_addressable (slot);
}
/* Since SLOT is not known to the called function
to belong to its stack frame, we must build an explicit
@ -6955,8 +6950,17 @@ expand_expr (exp, target, tmode, modifier)
if (TREE_OPERAND (exp, 1) == NULL_TREE)
return target;
}
DECL_RTL (slot) = target;
else
{
DECL_RTL (slot) = target;
/* If we must have an addressable slot, then make sure that
the RTL that we just stored in slot is OK. */
if (TREE_ADDRESSABLE (slot))
{
TREE_ADDRESSABLE (slot) = 0;
mark_addressable (slot);
}
}
}
exp1 = TREE_OPERAND (exp, 3) = TREE_OPERAND (exp, 1);