From: ktkachov Date: Thu, 2 Jun 2016 08:54:15 +0000 (+0000) Subject: Fix fallout from: [ARM] PR target/70830: Avoid POP-{reglist}^ when returning from... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=da49991876455a1bfaab85b150ea71fa5d874cb7;p=thirdparty%2Fgcc.git Fix fallout from: [ARM] PR target/70830: Avoid POP-{reglist}^ when returning from interrupt handlers PR target/70830 * config/arm/arm.c (arm_output_multireg_pop): Guard "pop" on update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237027 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d23e27dd7ffd..23171c578d18 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-06-02 Kyrylo Tkachov + + PR target/70830 + * config/arm/arm.c (arm_output_multireg_pop): Guard "pop" on update. + 2016-06-02 Segher Boessenkool * config/rs6000/dfp.md (trunctddd2): Correct the "length" attribute. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index e9240908ea9c..47d2447ed34c 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -17781,10 +17781,8 @@ arm_output_multireg_pop (rtx *operands, bool return_pc, rtx cond, bool reverse, conditional = reverse ? "%?%D0" : "%?%d0"; /* Can't use POP if returning from an interrupt. */ - if ((regno_base == SP_REGNUM) && !(interrupt_p && return_pc)) - { - sprintf (pattern, "pop%s\t{", conditional); - } + if ((regno_base == SP_REGNUM) && update && !(interrupt_p && return_pc)) + sprintf (pattern, "pop%s\t{", conditional); else { /* Output ldmfd when the base register is SP, otherwise output ldmia.