From: Geoffrey Keating Date: Tue, 23 Sep 2003 21:37:32 +0000 (+0000) Subject: rs6000.c (function_arg_pass_by_reference): Don't pass zero-size arrays by reference. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fff2cb99c987f4e9f0a8dffc0c3acd363f8a097f;p=gcc.git rs6000.c (function_arg_pass_by_reference): Don't pass zero-size arrays by reference. 2003-09-23 Geoffrey Keating * config/rs6000/rs6000.c (function_arg_pass_by_reference): Don't pass zero-size arrays by reference. (rs6000_va_arg): Likewise. 2003-09-23 Geoffrey Keating * gcc.dg/darwin-abi-1.c: New file. From-SVN: r71698 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a175b85059..dcb14a95228 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-09-23 Geoffrey Keating + + * config/rs6000/rs6000.c (function_arg_pass_by_reference): Don't + pass zero-size arrays by reference. + (rs6000_va_arg): Likewise. + 2003-09-23 Nathanael Nerode * config.gcc: Set use_fixproto=no in each specific *-gnu* diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 0b7be5ac5e4..c3e532e0d6e 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3977,7 +3977,7 @@ function_arg_pass_by_reference (CUMULATIVE_ARGS *cum ATTRIBUTE_UNUSED, return 1; } - return type && int_size_in_bytes (type) <= 0; + return type && int_size_in_bytes (type) < 0; } /* Perform any needed actions needed for a function that is receiving a @@ -4206,7 +4206,7 @@ rs6000_va_arg (tree valist, tree type) if (DEFAULT_ABI != ABI_V4) { /* Variable sized types are passed by reference. */ - if (int_size_in_bytes (type) <= 0) + if (int_size_in_bytes (type) < 0) { u = build_pointer_type (type); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a06118698a1..494bedb59c0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-09-23 Geoffrey Keating + + * gcc.dg/darwin-abi-1.c: New file. + 2003-09-21 Andrew Pinski PR target/12281 diff --git a/gcc/testsuite/gcc.dg/darwin-abi-1.c b/gcc/testsuite/gcc.dg/darwin-abi-1.c new file mode 100644 index 00000000000..c7c0288e8bb --- /dev/null +++ b/gcc/testsuite/gcc.dg/darwin-abi-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target powerpc*-*-darwin* } } */ +/* { dg-options "-O" } */ +/* { dg-final { scan-assembler "li r3,12345\n\tbl " } } */ + +/* Check that zero-size structures don't affect parameter passing. */ + +struct empty { }; +extern void foo (struct empty e, int a); +void bar (void) { + struct empty e; + foo (e, 12345); +}