On Tue, May 18, 2021 at 11:18 PM Richard Sandiford <richard.sandif...@arm.com> wrote: > > Hongtao Liu via Gcc-patches <gcc-patches@gcc.gnu.org> writes: > > On Mon, May 17, 2021 at 5:56 PM Richard Sandiford > > <richard.sandif...@arm.com> wrote: > >> It looks like the rtx “used” flag is unused for INSNs, so we could > >> use that as a CALL_INSN flag that indicates a fake call. We could just > >> need to make: > >> > >> /* For all other RTXes clear the used flag on the copy. */ > >> RTX_FLAG (copy, used) = 0; > >> > >> conditional on !INSN_P. > >> > > I got another error in > > > > @@ -83,6 +83,9 @@ control_flow_insn_p (const rtx_insn *insn) > > return true; > > > > case CALL_INSN: > > + /* CALL_INSN use "used" flag to indicate it's a fake call. */ > > + if (RTX_FLAG (insn, used)) > > + break; > > I guess this is because of the nonlocal_goto condition? If so, that > could be fixed by adding a REG_EH_REGION note of INT_MIN. Even if we > don't do that, I think the fix belongs in nonlocal_goto instead. > This is error info, IMHO, the fix should be in control_flow_insn_p?
../../gcc/gnu-toolchain/pr82735/gcc/testsuite/gcc.target/i386/pr64061.c: In function ‘foo’: ../../gcc/gnu-toolchain/pr82735/gcc/testsuite/gcc.target/i386/pr64061.c:21:1: error: in basic block 5: 21 | } | ^ ../../gcc/gnu-toolchain/pr82735/gcc/testsuite/gcc.target/i386/pr64061.c:21:1: error: flow control insn inside a basic block (call_insn 77 50 86 5 (parallel [ (call (mem:QI (unspec_volatile [ (const_int 0 [0]) ] UNSPECV_VZEROUPPER) [0 S1 A8]) (const_int 0 [0])) (unspec [ (const_int 1 [0x1]) ] UNSPEC_CALLEE_ABI) ]) -1 (nil) (nil)) during RTL pass: pro_and_epilogue ../../gcc/gnu-toolchain/pr82735/gcc/testsuite/gcc.target/i386/pr64061.c:21:1: internal compiler error: in rtl_verify_bb_insns, at cfgrtl.c:2797 0x129a2a3 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/rtl-error.c:108 0xcb8834 rtl_verify_bb_insns /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/cfgrtl.c:2797 0xcb8b09 rtl_verify_flow_info_1 /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/cfgrtl.c:2883 0xcb9284 rtl_verify_flow_info /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/cfgrtl.c:3125 0xc9f44d verify_flow_info() /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/cfghooks.c:267 0xcb21b7 checking_verify_flow_info /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/cfghooks.h:212 0xcb6a3c commit_edge_insertions() /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/cfgrtl.c:2115 0xebfcb8 thread_prologue_and_epilogue_insns() /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/function.c:6136 0xec07db rest_of_handle_thread_prologue_and_epilogue /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/function.c:6510 0xec09b8 execute /export/users2/liuhongt/gcc/gnu-toolchain/pr82735/gcc/function.c:6586 > > Thanks, > Richard -- BR, Hongtao