Commit 2ea0d750 by Segher Boessenkool Committed by Segher Boessenkool

cfgcleanup: Ignore clobbers in bb_is_just_return

The function bb_is_just_return finds if the BB it is asked about does
just a return and nothing else.  It currently does not allow clobbers
in the block either, which we of course can allow just fine.

This patch changes that.


	* cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.

gcc/testsuite/

From-SVN: r248351
parent 25b81686
2017-05-22 Segher Boessenkool <segher@kernel.crashing.org>
* cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
2017-05-22 Jakub Jelinek <jakub@redhat.com>
PR middle-end/80809
......
......@@ -2666,7 +2666,7 @@ trivially_empty_bb_p (basic_block bb)
/* Return true if BB contains just a return and possibly a USE of the
return value. Fill in *RET and *USE with the return and use insns
if any found, otherwise NULL. */
if any found, otherwise NULL. All CLOBBERs are ignored. */
static bool
bb_is_just_return (basic_block bb, rtx_insn **ret, rtx_insn **use)
......@@ -2680,13 +2680,15 @@ bb_is_just_return (basic_block bb, rtx_insn **ret, rtx_insn **use)
FOR_BB_INSNS (bb, insn)
if (NONDEBUG_INSN_P (insn))
{
if (!*ret && ANY_RETURN_P (PATTERN (insn)))
rtx pat = PATTERN (insn);
if (!*ret && ANY_RETURN_P (pat))
*ret = insn;
else if (!*ret && !*use && GET_CODE (PATTERN (insn)) == USE
&& REG_P (XEXP (PATTERN (insn), 0))
&& REG_FUNCTION_VALUE_P (XEXP (PATTERN (insn), 0)))
else if (!*ret && !*use && GET_CODE (pat) == USE
&& REG_P (XEXP (pat, 0))
&& REG_FUNCTION_VALUE_P (XEXP (pat, 0)))
*use = insn;
else
else if (GET_CODE (pat) != CLOBBER)
return false;
}
......
2017-05-22 Segher Boessenkool <segher@kernel.crashing.org>
* gcc.target/powerpc/conditional-return.c: New testcase.
2017-05-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/p8-vec-xl-xst.c: Fix target string to
......
/* Check that a conditional return is used. */
/* { dg-do compile } */
/* { dg-options "-O2 -w" } */
/* { dg-final { scan-assembler {\mbeqlr\M} } } */
int f(int x)
{
if (x)
return x + 31;
return;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment