+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.
/* 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
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);