From 07432a807ede1c629f0f52aa5f8bf00012929e88 Mon Sep 17 00:00:00 2001 From: Jozef Lawrynowicz Date: Thu, 9 Apr 2020 20:52:20 +0100 Subject: [PATCH] MSP430: Indiciate that the epilogue_helper insn does not fallthru This fixes an ICE in rtl_verify_fallthru, at cfgrtl.c:2970 gcc.c-torture/execute/20071210-1.c for -mcpu=msp430 at -O2 and above. The epilogue_helper insn was treated as a regular insn which will fallthru, so when a barrier is emitted after it, RTL verification failed as rtl_verify_fallthru. gcc/ChangeLog: 2020-04-09 Jozef Lawrynowicz * config/msp430/msp430.c (msp430_expand_epilogue): Use emit_jump_insn when to emit the epilogue_helper insn. * config/msp430/msp430.md (epilogue_helper): Add a return insn to the RTL pattern. --- gcc/ChangeLog | 7 +++++++ gcc/config/msp430/msp430.c | 2 +- gcc/config/msp430/msp430.md | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e5e2290ab1a..bce700e472e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2020-04-09 Jozef Lawrynowicz + + * config/msp430/msp430.c (msp430_expand_epilogue): Use emit_jump_insn + when to emit the epilogue_helper insn. + * config/msp430/msp430.md (epilogue_helper): Add a return insn to the + RTL pattern. + 2020-04-09 Jakub Jelinek PR debug/94495 diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index cde14c83812..e0d2d732ade 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -2587,7 +2587,7 @@ msp430_expand_epilogue (int is_eh) && helper_n > 1 && !is_eh) { - emit_insn (gen_epilogue_helper (GEN_INT (helper_n))); + emit_jump_insn (gen_epilogue_helper (GEN_INT (helper_n))); return; } else diff --git a/gcc/config/msp430/msp430.md b/gcc/config/msp430/msp430.md index 815d122d8a8..b6602fbca66 100644 --- a/gcc/config/msp430/msp430.md +++ b/gcc/config/msp430/msp430.md @@ -1130,7 +1130,9 @@ ) (define_insn "epilogue_helper" - [(unspec_volatile [(match_operand 0 "immediate_operand" "i")] UNS_EPILOGUE_HELPER)] + [(set (pc) + (unspec_volatile [(match_operand 0 "immediate_operand" "i")] UNS_EPILOGUE_HELPER)) + (return)] "" "BR%Q0\t#__mspabi_func_epilog_%J0" ) -- 2.30.2