PR 69246: Invalid REG_ARGS_SIZE for sibcalls
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 15 Jan 2016 14:41:10 +0000 (14:41 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 15 Jan 2016 14:41:10 +0000 (14:41 +0000)
commita00fe3b787de1916bed415c57024d49bbe81cb1c
treefa57a9eddd888c9241714cfcc44471d4d36211f8
parentaea40b08771af69bb9b5e582e6147c3154e56abe
PR 69246: Invalid REG_ARGS_SIZE for sibcalls

The problem in this PR was that we were treating a sibcall as popping
arguments, leading to a negative REG_ARGS_SIZE.

It doesn't really make sense to treat sibcalls as popping since
(a) they're deallocating the caller's stack, not ours, and
(b) there are no optabs for popping sibcalls (any more).

Tested on x86_64-linux-gnu.

gcc/
PR middle-end/69246
* calls.c (emit_call_1): Force n_popped to zero for sibcalls.

gcc/testsuite/
PR middle-end/69246
* gcc.target/i386/pr69246.c: New test.

From-SVN: r232428
gcc/ChangeLog
gcc/calls.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr69246.c [new file with mode: 0644]