diff options
author | Andreas Schwab <schwab@suse.de> | 2013-10-22 12:36:08 +0000 |
---|---|---|
committer | Andreas Schwab <schwab@gcc.gnu.org> | 2013-10-22 12:36:08 +0000 |
commit | 1adb2fb9ceb1928f5ced22105a49ebcf76b02ab2 (patch) | |
tree | 32b06148de3473edeeda174ca57b3f0c78c29278 | |
parent | be194e0e30f86b8f0f5ca578f5274814811a2f0f (diff) | |
download | gcc-1adb2fb9ceb1928f5ced22105a49ebcf76b02ab2.zip gcc-1adb2fb9ceb1928f5ced22105a49ebcf76b02ab2.tar.gz gcc-1adb2fb9ceb1928f5ced22105a49ebcf76b02ab2.tar.bz2 |
m68k.c (notice_update_cc): Handle register conflict with PRE_DEC.
* config/m68k/m68k.c (notice_update_cc): Handle register conflict
with PRE_DEC.
From-SVN: r203922
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.c | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5f3e0f..5b53484 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-10-22 Andreas Schwab <schwab@suse.de> + + * config/m68k/m68k.c (notice_update_cc): Handle register conflict + with PRE_DEC. + 2013-10-22 Paolo Carlini <paolo.carlini@oracle.com> * doc/contrib.texi ([Fran@,{c}ois Dumont], [Tim Shen], diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 5e3236f..7035504 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -4209,6 +4209,13 @@ notice_update_cc (rtx exp, rtx insn) && cc_status.value2 && reg_overlap_mentioned_p (cc_status.value1, cc_status.value2)) cc_status.value2 = 0; + /* Check for PRE_DEC in dest modifying a register used in src. */ + if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM + && GET_CODE (XEXP (cc_status.value1, 0)) == PRE_DEC + && cc_status.value2 + && reg_overlap_mentioned_p (XEXP (XEXP (cc_status.value1, 0), 0), + cc_status.value2)) + cc_status.value2 = 0; if (((cc_status.value1 && FP_REG_P (cc_status.value1)) || (cc_status.value2 && FP_REG_P (cc_status.value2)))) cc_status.flags = CC_IN_68881; |