[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