aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Cox <coxs@gnu.org>1996-03-29 19:27:45 +0000
committerStan Cox <coxs@gnu.org>1996-03-29 19:27:45 +0000
commit0a78e86253db82240953e120ea10084870697d61 (patch)
tree16f819cf7c9e0a39813442cf1ca1984f402a87c7
parent6752b7d4dd2132150ead2fc6725873607bd79326 (diff)
downloadgcc-0a78e86253db82240953e120ea10084870697d61.zip
gcc-0a78e86253db82240953e120ea10084870697d61.tar.gz
gcc-0a78e86253db82240953e120ea10084870697d61.tar.bz2
(notice_update_cc): Clear cc_status if it references a mem we are modifying.
From-SVN: r11643
-rw-r--r--gcc/config/i386/i386.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index def1722..23882e4 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -2922,9 +2922,11 @@ notice_update_cc (exp)
&& (REG_P (SET_SRC (exp))
|| GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
{
- if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM)
+ if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM
+ || reg_mentioned_p (SET_DEST (exp), cc_status.value1))
cc_status.value1 = 0;
- if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM)
+ if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM
+ || reg_mentioned_p (SET_DEST (exp), cc_status.value2))
cc_status.value2 = 0;
return;
}