* calls.c (load_register_parameters): Fix zero size sibcall logic.

From-SVN: r234332
This commit is contained in:
Jason Merrill 2016-03-18 11:31:18 -04:00 committed by Jason Merrill
parent 09d8f35943
commit 07c10d8f2e
3 changed files with 14 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2016-03-18 Jason Merrill <jason@redhat.com>
* calls.c (load_register_parameters): Fix zero size sibcall logic.
2016-03-18 Kirill Yukhin <kirill.yukhin@intel.com>
* config/i386/sse.md: Use vpbroadcastq for broadcasting DF

View File

@ -2083,9 +2083,9 @@ load_register_parameters (struct arg_data *args, int num_actuals,
/* Check for overlap with already clobbered argument area,
providing that this has non-zero size. */
if (is_sibcall
&& (size == 0
|| mem_overlaps_already_clobbered_arg_p
(XEXP (args[i].value, 0), size)))
&& size != 0
&& (mem_overlaps_already_clobbered_arg_p
(XEXP (args[i].value, 0), size)))
*sibcall_failure = 1;
if (size % UNITS_PER_WORD == 0

View File

@ -0,0 +1,7 @@
// Test for sibcall optimization with empty struct.
// { dg-options "-O2" }
// { dg-final { scan-assembler "jmp" { target i?86-*-* x86_64-*-* } } }
struct A { };
void f(struct A);
void g(struct A a) { f(a); }