[PATCH][testsuite] Introduce effective target non_strict_prototype

Jeff Law law@redhat.com
Thu Sep 17 21:37:03 GMT 2020


On 9/10/20 6:01 AM, Tom de Vries wrote:
> Hi,
>
> Consider test-case gcc.c-torture/compile/pr71109.c.
>
> It contains a prototype-less declaration of foo:
> ...
> static void foo ();
> ...
> followed by a call to foo
> ...
>       foo (bar, a);
> ...
> followed by the definition of foo:
> ...
> static inline void
> foo (int x, struct S y, struct T z)
> ...
>
> The test-case has undefined behaviour, but for the nvptx target it doesn't even
> assemble:
> ...
> $ gcc src/gcc/testsuite/gcc.c-torture/compile/pr71109.c -c
> ptxas pr71109.o, line 196; error   : Type of argument does not match formal parameter '%in_ar0'
> ptxas pr71109.o, line 196; error   : Alignment of argument does not match formal parameter '%in_ar0'
> ptxas pr71109.o, line 196; error   : Call has wrong number of parameters
> ptxas fatal   : Ptx assembly aborted due to errors
> nvptx-as: ptxas returned 255 exit status
> ...
>
> The problem is that this call:
> ...
>    191  {
>    192  .param .u64 %out_arg1;
>    193  st.param.u64 [%out_arg1],%r23;
>    194  .param .u64 %out_arg2;
>    195  st.param.u64 [%out_arg2],%r32;
>    196  call foo,(%out_arg1,%out_arg2);
>    197  }
> ...
> does not match the preceding declaration:
> ...
>      6  // BEGIN FUNCTION DECL: foo
>      7  .func foo (.param .u32 %in_ar0, .param .u64 %in_ar1, .param .u64 %in_ar2);
> ...
> which is a PTX error.
>
> Introduce an effective target non_strict_prototype that returns 0 for nvptx,
> and use it in this and similar test-cases.
>
> Tested on nvptx.
>
> OK for trunk?
>
> Thanks,
> - Tom
>
> [testsuite] Introduce effective target non_strict_prototype
>
> gcc/testsuite/ChangeLog:
>
> 	* lib/target-supports.exp (check_effective_target_non_strict_prototype):
> 	New proc.
> 	* gcc.c-torture/compile/pr71109.c: Require effective target
> 	non_strict_prototype.
> 	* gcc.c-torture/compile/pr83051-2.c: Same.
> 	* gcc.c-torture/compile/pr89663-1.c: Same.
> 	* gcc.c-torture/compile/pr89663-2.c: Same.
> 	* gcc.c-torture/compile/pr96796.c: Same.

OK

jeff


-------------- next part --------------
A non-text attachment was scrubbed...
Name: pEpkey.asc
Type: application/pgp-keys
Size: 1733 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20200917/0a37ced5/attachment.bin>


More information about the Gcc-patches mailing list