re PR middle-end/66685 (conftest.c:16:1: internal compiler error: in as_a, at is-a.h:192)

gcc/
	PR bootstrap/66685
	* rtl.c (classify_insn): Only return JUMP_INSN for parallel returns if
	there are no CALLs in the same pattern.

From-SVN: r225263
This commit is contained in:
Richard Sandiford 2015-07-01 16:48:30 +00:00 committed by Richard Sandiford
parent c219aeb7de
commit 23bae97dbd
2 changed files with 10 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2015-07-01 Richard Sandiford <richard.sandiford@arm.com>
PR bootstrap/66685
* rtl.c (classify_insn): Only return JUMP_INSN for parallel returns if
there are no CALLs in the same pattern.
2015-07-01 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR rtl-optimization/61047

View file

@ -683,17 +683,20 @@ classify_insn (rtx x)
if (GET_CODE (x) == PARALLEL)
{
int j;
bool has_return_p = false;
for (j = XVECLEN (x, 0) - 1; j >= 0; j--)
if (GET_CODE (XVECEXP (x, 0, j)) == CALL)
return CALL_INSN;
else if (ANY_RETURN_P (XVECEXP (x, 0, j)))
return JUMP_INSN;
has_return_p = true;
else if (GET_CODE (XVECEXP (x, 0, j)) == SET
&& GET_CODE (SET_DEST (XVECEXP (x, 0, j))) == PC)
return JUMP_INSN;
else if (GET_CODE (XVECEXP (x, 0, j)) == SET
&& GET_CODE (SET_SRC (XVECEXP (x, 0, j))) == CALL)
return CALL_INSN;
if (has_return_p)
return JUMP_INSN;
}
#ifdef GENERATOR_FILE
if (GET_CODE (x) == MATCH_OPERAND