aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-08-11 08:09:30 -0700
committerRichard Henderson <rth@gcc.gnu.org>2011-08-11 08:09:30 -0700
commit6bfd73a62142342d1412f0bce7a1241e033e1a43 (patch)
tree1c93b1f7db971017a325c94ac4b7a972fb173235 /gcc/expr.c
parent022676dcde6f4ed5722c13a7a9049f06a9e9a088 (diff)
downloadgcc-6bfd73a62142342d1412f0bce7a1241e033e1a43.zip
gcc-6bfd73a62142342d1412f0bce7a1241e033e1a43.tar.gz
gcc-6bfd73a62142342d1412f0bce7a1241e033e1a43.tar.bz2
re PR bootstrap/50018 (fixup_args_size_notes ICE breaks m68k-linux bootstrap)
PR bootstrap/50018 * expr.c (fixup_args_size_notes): Accept and ignore normal calls. From-SVN: r177669
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index f0b76e1..997eb3e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3567,8 +3567,10 @@ fixup_args_size_notes (rtx prev, rtx last, int end_args_size)
/* Look for a call_pop pattern. */
if (CALL_P (insn))
{
- /* We're not supposed to see non-pop call patterns here. */
- gcc_assert (GET_CODE (pat) == PARALLEL);
+ /* We have to allow non-call_pop patterns for the case
+ of emit_single_push_insn of a TLS address. */
+ if (GET_CODE (pat) != PARALLEL)
+ continue;
/* All call_pop have a stack pointer adjust in the parallel.
The call itself is always first, and the stack adjust is
@@ -3583,7 +3585,8 @@ fixup_args_size_notes (rtx prev, rtx last, int end_args_size)
break;
}
/* We'd better have found the stack pointer adjust. */
- gcc_assert (i > 0);
+ if (i == 0)
+ continue;
/* Fall through to process the extracted SET and DEST
as if it was a standalone insn. */
}