diff options
author | Jeff Law <jeffreyalaw@gmail.com> | 2022-09-27 01:44:38 -0400 |
---|---|---|
committer | Jeff Law <jeffreyalaw@gmail.com> | 2022-09-27 02:19:57 -0400 |
commit | 5da546d7e0561def07c783e6ec897aaa9e7837c6 (patch) | |
tree | aed73b89b42b7c45c77767b8a9aae5f3d145f83f | |
parent | b04208895fed34171eac6bafb60c90048eb1cb0c (diff) | |
download | gcc-5da546d7e0561def07c783e6ec897aaa9e7837c6.zip gcc-5da546d7e0561def07c783e6ec897aaa9e7837c6.tar.gz gcc-5da546d7e0561def07c783e6ec897aaa9e7837c6.tar.bz2 |
Fix ICEs due to recent jump-to-return optimization
gcc/
* cfgrtl.cc (fixup_reorder_chain): Verify that simple_return
and return are available before trying to use them.
-rw-r--r-- | gcc/cfgrtl.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cfgrtl.cc b/gcc/cfgrtl.cc index 90cd6ee..281a432 100644 --- a/gcc/cfgrtl.cc +++ b/gcc/cfgrtl.cc @@ -4049,7 +4049,8 @@ fixup_reorder_chain (void) rtx_insn *ret, *use; basic_block dest; if (bb_is_just_return (e_fall->dest, &ret, &use) - && (PATTERN (ret) == simple_return_rtx || PATTERN (ret) == ret_rtx)) + && ((PATTERN (ret) == simple_return_rtx && targetm.have_simple_return ()) + || (PATTERN (ret) == ret_rtx && targetm.have_return ()))) { ret_label = PATTERN (ret); dest = EXIT_BLOCK_PTR_FOR_FN (cfun); |