Commit 73620b82 by Richard Kenner

(preserve_temp_slots): Preserve anything whose address was taken when

X is zero.

From-SVN: r8363
parent 7a0b7b9a
...@@ -1028,8 +1028,16 @@ preserve_temp_slots (x) ...@@ -1028,8 +1028,16 @@ preserve_temp_slots (x)
{ {
struct temp_slot *p = 0; struct temp_slot *p = 0;
/* If there is no result, we still might have some objects whose address
were taken, so we need to make sure they stay around. */
if (x == 0) if (x == 0)
return; {
for (p = temp_slots; p; p = p->next)
if (p->in_use && p->level == temp_slot_level && p->addr_taken)
p->level--;
return;
}
/* If X is a register that is being used as a pointer, see if we have /* If X is a register that is being used as a pointer, see if we have
a temporary slot we know it points to. To be consistent with a temporary slot we know it points to. To be consistent with
...@@ -1051,7 +1059,7 @@ preserve_temp_slots (x) ...@@ -1051,7 +1059,7 @@ preserve_temp_slots (x)
} }
/* First see if we can find a match. */ /* First see if we can find a match. */
if ( p== 0) if (p == 0)
p = find_temp_slot_from_address (XEXP (x, 0)); p = find_temp_slot_from_address (XEXP (x, 0));
if (p != 0) if (p != 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment