diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-06-10 14:14:11 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-06-10 14:14:11 -0400 |
commit | 8cfe18d616b72d9d8bf9ebe40c9a1c10be9f3f24 (patch) | |
tree | 1319118a55a2d1b16a37d28f4a58042464b34b7a /gcc | |
parent | 018086d1d0d90af377905aa43d806a465be17d50 (diff) | |
download | gcc-8cfe18d616b72d9d8bf9ebe40c9a1c10be9f3f24.zip gcc-8cfe18d616b72d9d8bf9ebe40c9a1c10be9f3f24.tar.gz gcc-8cfe18d616b72d9d8bf9ebe40c9a1c10be9f3f24.tar.bz2 |
(flow_analysis, find_basic_blocks): Ignore nonlocal_label_list for
CALL_INSN that has a REG_RETVAL.
From-SVN: r12263
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/flow.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -358,6 +358,10 @@ flow_analysis (f, nregs, file) && nonlocal_label_list != 0) || prev_code == BARRIER))) i++; + + if (code == CALL_INSN && ! find_reg_note (insn, REG_RETVAL, NULL_RTX)) + code = INSN; + if (code != NOTE) prev_code = code; } @@ -448,7 +452,8 @@ find_basic_blocks (f, nonlocal_label_list) || (GET_RTX_CLASS (code) == 'i' && (prev_code == JUMP_INSN || (prev_code == CALL_INSN - && nonlocal_label_list != 0) + && nonlocal_label_list != 0 + && ! find_reg_note (insn, REG_RETVAL, NULL_RTX)) || prev_code == BARRIER))) { basic_block_head[++i] = insn; @@ -577,7 +582,8 @@ find_basic_blocks (f, nonlocal_label_list) to all the nonlocal goto handler labels. */ for (insn = f; insn; insn = NEXT_INSN (insn)) - if (GET_CODE (insn) == CALL_INSN) + if (GET_CODE (insn) == CALL_INSN + && ! find_reg_note (insn, REG_RETVAL, NULL_RTX)) { for (x = nonlocal_label_list; x; x = XEXP (x, 1)) mark_label_ref (gen_rtx (LABEL_REF, VOIDmode, XEXP (x, 0)), |