diff options
author | Jim Wilson <wilson@cygnus.com> | 1997-09-16 20:59:22 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1997-09-16 13:59:22 -0700 |
commit | 21002281e55cbe5b1c8fbacc9074629612dd1b4a (patch) | |
tree | a5b5c80ce7c7eb18c2b823306cc1138c3b672c7a | |
parent | 7d9e0d333c7cff4c6deecef4a8fd2b407a5c3f2b (diff) | |
download | gcc-21002281e55cbe5b1c8fbacc9074629612dd1b4a.zip gcc-21002281e55cbe5b1c8fbacc9074629612dd1b4a.tar.gz gcc-21002281e55cbe5b1c8fbacc9074629612dd1b4a.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/expr.c | 18 |
2 files changed, 17 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 50633dc..53929a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. @@ -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); |