From: schwab Date: Tue, 22 Oct 2013 12:36:08 +0000 (+0000) Subject: * config/m68k/m68k.c (notice_update_cc): Handle register conflict X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=910f39df36fbec51dbcc72835bf11dc401758a49;p=thirdparty%2Fgcc.git * config/m68k/m68k.c (notice_update_cc): Handle register conflict with PRE_DEC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203922 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5f3e0fb7ec0..5b53484e4f76 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-10-22 Andreas Schwab + + * config/m68k/m68k.c (notice_update_cc): Handle register conflict + with PRE_DEC. + 2013-10-22 Paolo Carlini * doc/contrib.texi ([Fran@,{c}ois Dumont], [Tim Shen], diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 5e3236fa8deb..7035504bfe3c 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;