From 1adb2fb9ceb1928f5ced22105a49ebcf76b02ab2 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Tue, 22 Oct 2013 12:36:08 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/m68k/m68k.c | 7 +++++++ 2 files changed, 12 insertions(+) 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; -- 2.39.2