Message ID | 6e0d0f16-6db5-0369-f0dd-90344f5d272e@mentor.com |
---|---|
State | New |
Headers | show |
Hi Tom! On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote: > I've run the gcc testsuite for target nvptx-none and ran into "test for > excess errors" FAILs due to: > ... > sorry, unimplemented: target cannot support alloca. > ... > > This patch marks those testcases as requiring alloca. Thanks! > OK for trunk for stage1? Wouldn't this be good "as obvious" for trunk, right now? (Or are there any potential worries?) > 2017-03-23 Tom de Vries <tom@codesourcery.com> "PR testsuite/80092", I suppose? > * gcc.dg/Walloca-7.c: Add dg-require-effective-target alloca. > * gcc.dg/Walloca-12.c: Same. > * gcc.dg/attr-alloc_size-8.c: Same. > * gcc.dg/Walloca-4.c: Same. > * gcc.dg/Walloca-8.c: Same. > * gcc.dg/Walloca-13.c: Same. > * gcc.dg/attr-alloc_size-9.c: Same. > * gcc.dg/Walloca-1.c: Same. > * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same. > * gcc.dg/Walloca-5.c: Same. > * gcc.dg/Walloca-10.c: Same. > * gcc.dg/Walloca-9.c: Same. > * gcc.dg/attr-alloc_size-6.c: Same. > * gcc.dg/Wvla-larger-than-1.c: Same. > * gcc.dg/torture/pr71881.c: Same. > * gcc.dg/torture/pr71901.c: Same. > * gcc.dg/torture/pr78742.c: Same. > * gcc.dg/builtin-alloc-size.c: Same. > * gcc.dg/Walloca-2.c: Same. > * gcc.dg/Walloca-6.c: Same. > * gcc.dg/Walloca-11.c: Same. > * gcc.dg/attr-alloc_size-7.c: Same. > * gcc.dg/Wvla-larger-than-2.c: Same. > * gcc.dg/Walloca-3.c: Same. > * c-c++-common/Wimplicit-fallthrough-7.c: Same. > * gcc.c-torture/compile/pr79413.c: Same. > * gcc.c-torture/compile/pr78439.c: Same. Grüße Thomas
On 23/03/17 17:24, Thomas Schwinge wrote: > Hi Tom! > > On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote: >> I've run the gcc testsuite for target nvptx-none and ran into "test for >> excess errors" FAILs due to: >> ... >> sorry, unimplemented: target cannot support alloca. >> ... >> >> This patch marks those testcases as requiring alloca. > > Thanks! > >> OK for trunk for stage1? > > Wouldn't this be good "as obvious" for trunk, right now? (Or are there > any potential worries?) > I suppose you're right we could classify this as obvious. I'm not sure about "right now" though, given that we're in stage4 and this is neither a regression fix nor a documentation fix. Thanks, - Tom
On Mar 23, 2017, at 8:46 AM, Tom de Vries <Tom_deVries@mentor.com> wrote: > > I've run the gcc testsuite for target nvptx-none and ran into "test for excess errors" FAILs due to: > ... > sorry, unimplemented: target cannot support alloca. We'd encourage ports to support alloca. :-) > OK for trunk for stage1? Ok. Ok for release branches and trunk as well, if you want. I'd recommend trunk, if your port is meant to work and test out nicely in gcc 7.
Hi! On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote: > I've run the gcc testsuite for target nvptx-none and ran into "test for > excess errors" FAILs due to: > ... > sorry, unimplemented: target cannot support alloca. > ... > > This patch marks those testcases as requiring alloca. I observed that this test case: > --- gcc/testsuite/gcc.dg/torture/pr71881.c (revision 246278) > +++ gcc/testsuite/gcc.dg/torture/pr71881.c (working copy) > @@ -1,4 +1,5 @@ > /* { dg-do compile } */ > +/* { dg-require-effective-target alloca } */ > /* { dg-additional-options "-g" } */ ... as well as this test case: > --- gcc/testsuite/gcc.c-torture/compile/pr79413.c (revision 246278) > +++ gcc/testsuite/gcc.c-torture/compile/pr79413.c (working copy) > @@ -1,3 +1,4 @@ > +/* { dg-require-effective-target alloca } */ > /* PR c/79413 */ ... previously did PASS for anything but "-O0" (that is, any "alloca" usage got optimized away). Now changed as follows: [-FAIL:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O0 [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O1 [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O2 [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O3 -g [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -Os [-(test for excess errors)-] [-FAIL:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O0 [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O1 [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O2 [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O3 -g [-(test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -Os [-(test for excess errors)-] Would it be useful to XFAIL these for "-O0" only (along with a comment), so that we continue testing that any "alloca" usage gets optimized away? (Just an idea.) Grüße Thomas
On 28/03/17 10:23, Thomas Schwinge wrote: > Hi! > > On Thu, 23 Mar 2017 16:46:19 +0100, Tom de Vries <Tom_deVries@mentor.com> wrote: >> I've run the gcc testsuite for target nvptx-none and ran into "test for >> excess errors" FAILs due to: >> ... >> sorry, unimplemented: target cannot support alloca. >> ... >> >> This patch marks those testcases as requiring alloca. > > I observed that this test case: > >> --- gcc/testsuite/gcc.dg/torture/pr71881.c (revision 246278) >> +++ gcc/testsuite/gcc.dg/torture/pr71881.c (working copy) >> @@ -1,4 +1,5 @@ >> /* { dg-do compile } */ >> +/* { dg-require-effective-target alloca } */ >> /* { dg-additional-options "-g" } */ > > ... as well as this test case: > >> --- gcc/testsuite/gcc.c-torture/compile/pr79413.c (revision 246278) >> +++ gcc/testsuite/gcc.c-torture/compile/pr79413.c (working copy) >> @@ -1,3 +1,4 @@ >> +/* { dg-require-effective-target alloca } */ >> /* PR c/79413 */ > > ... previously did PASS for anything but "-O0" (that is, any "alloca" > usage got optimized away). Now changed as follows: > > [-FAIL:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O0 [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O1 [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O2 [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -O3 -g [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.c-torture/compile/pr79413.c -Os [-(test for excess errors)-] > > [-FAIL:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O0 [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O1 [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O2 [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -O3 -g [-(test for excess errors)-] > [-PASS:-]{+UNSUPPORTED:+} gcc.dg/torture/pr71881.c -Os [-(test for excess errors)-] > > Would it be useful to XFAIL these for "-O0" only (along with a comment), > so that we continue testing that any "alloca" usage gets optimized away? > (Just an idea.) I'd say that makes sense for test-cases which have the purpose of testing whether alloca is optimized away at certain optimization levels, but not for random test cases. Thanks, - Tom
2017-03-23 Tom de Vries <tom@codesourcery.com> * gcc.dg/Walloca-7.c: Add dg-require-effective-target alloca. * gcc.dg/Walloca-12.c: Same. * gcc.dg/attr-alloc_size-8.c: Same. * gcc.dg/Walloca-4.c: Same. * gcc.dg/Walloca-8.c: Same. * gcc.dg/Walloca-13.c: Same. * gcc.dg/attr-alloc_size-9.c: Same. * gcc.dg/Walloca-1.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same. * gcc.dg/Walloca-5.c: Same. * gcc.dg/Walloca-10.c: Same. * gcc.dg/Walloca-9.c: Same. * gcc.dg/attr-alloc_size-6.c: Same. * gcc.dg/Wvla-larger-than-1.c: Same. * gcc.dg/torture/pr71881.c: Same. * gcc.dg/torture/pr71901.c: Same. * gcc.dg/torture/pr78742.c: Same. * gcc.dg/builtin-alloc-size.c: Same. * gcc.dg/Walloca-2.c: Same. * gcc.dg/Walloca-6.c: Same. * gcc.dg/Walloca-11.c: Same. * gcc.dg/attr-alloc_size-7.c: Same. * gcc.dg/Wvla-larger-than-2.c: Same. * gcc.dg/Walloca-3.c: Same. * c-c++-common/Wimplicit-fallthrough-7.c: Same. * gcc.c-torture/compile/pr79413.c: Same. * gcc.c-torture/compile/pr78439.c: Same. Index: gcc/testsuite/gcc.dg/Walloca-7.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-7.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-7.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca -O0" } */ extern void f(void *); Index: gcc/testsuite/gcc.dg/Walloca-12.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-12.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-12.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=128 -O2" } */ void f (void*); Index: gcc/testsuite/gcc.dg/attr-alloc_size-8.c =================================================================== --- gcc/testsuite/gcc.dg/attr-alloc_size-8.c (revision 246278) +++ gcc/testsuite/gcc.dg/attr-alloc_size-8.c (working copy) @@ -3,6 +3,7 @@ -Wvla-larger-than, and -Walloc-size-larger-than options. The former two more specific options override the more general latter option. */ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-O2 -Walloc-size-larger-than=123 -Walloca-larger-than=234 -Wvla-larger-than=345" } */ #define SIZE_MAX __SIZE_MAX__ Index: gcc/testsuite/gcc.dg/Walloca-4.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-4.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-4.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=5000 -O2" } */ char * Index: gcc/testsuite/gcc.dg/Walloca-8.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-8.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-8.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=2000 -O2" } */ void *p; Index: gcc/testsuite/gcc.dg/Walloca-13.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-13.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-13.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=100 -O2" } */ void f (void*); Index: gcc/testsuite/gcc.dg/attr-alloc_size-9.c =================================================================== --- gcc/testsuite/gcc.dg/attr-alloc_size-9.c (revision 246278) +++ gcc/testsuite/gcc.dg/attr-alloc_size-9.c (working copy) @@ -3,6 +3,7 @@ with attribute malloc. This means that the pointer they return can be assumed not to alias any other valid pointer. */ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ void sink (void*); Index: gcc/testsuite/gcc.dg/Walloca-1.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-1.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-1.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=2000 -O2" } */ #define alloca __builtin_alloca Index: gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c (revision 246278) +++ gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c (working copy) @@ -4,6 +4,7 @@ -O2 (-ftree-vrp) is necessary for the tests involving ranges to pass, otherwise -O1 is sufficient. { dg-do compile } + { dg-require-effective-target alloca } { dg-options "-O2 -Wformat -Wformat-overflow=1 -ftrack-macro-expansion=0" } */ typedef __SIZE_TYPE__ size_t; Index: gcc/testsuite/gcc.dg/Walloca-5.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-5.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-5.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=123 -O2" } */ /* { dg-xfail-if "Currently broken but Andrew's work should fix this" { *-*-* } } */ Index: gcc/testsuite/gcc.dg/Walloca-10.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-10.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-10.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=2000 -O2" } */ // Test when the conditionals are incorrectly reversed. Index: gcc/testsuite/gcc.dg/Walloca-9.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-9.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-9.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=5000 -O2" } */ extern void useit(char *); Index: gcc/testsuite/gcc.dg/attr-alloc_size-6.c =================================================================== --- gcc/testsuite/gcc.dg/attr-alloc_size-6.c (revision 246278) +++ gcc/testsuite/gcc.dg/attr-alloc_size-6.c (working copy) @@ -4,6 +4,7 @@ to allocate objects in excess of the number of bytes specified by -Walloc-larger-than=maximum. */ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-O0 -Wall -Walloc-size-larger-than=12345" } */ #define MAXOBJSZ 12345 Index: gcc/testsuite/gcc.dg/Wvla-larger-than-1.c =================================================================== --- gcc/testsuite/gcc.dg/Wvla-larger-than-1.c (revision 246278) +++ gcc/testsuite/gcc.dg/Wvla-larger-than-1.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Wvla-larger-than=100 -O2" } */ typedef __SIZE_TYPE__ size_t; Index: gcc/testsuite/gcc.dg/torture/pr71881.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr71881.c (revision 246278) +++ gcc/testsuite/gcc.dg/torture/pr71881.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-additional-options "-g" } */ int a, b, c, d, *e, f, g; Index: gcc/testsuite/gcc.dg/torture/pr71901.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr71901.c (revision 246278) +++ gcc/testsuite/gcc.dg/torture/pr71901.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ typedef struct { int _mp_size; } mpz_t[1]; int a, b; Index: gcc/testsuite/gcc.dg/torture/pr78742.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr78742.c (revision 246278) +++ gcc/testsuite/gcc.dg/torture/pr78742.c (working copy) @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-require-effective-target int128 } */ +/* { dg-require-effective-target alloca } */ void foo(); Index: gcc/testsuite/gcc.dg/builtin-alloc-size.c =================================================================== --- gcc/testsuite/gcc.dg/builtin-alloc-size.c (revision 246278) +++ gcc/testsuite/gcc.dg/builtin-alloc-size.c (working copy) @@ -3,6 +3,7 @@ attribute alloc_size that __builtin_object_size can make use of (or are treated as if they were for that purpose).. { dg-do compile } + { dg-require-effective-target alloca } { dg-additional-options "-O2 -fdump-tree-optimized" } */ void sink (void*); Index: gcc/testsuite/gcc.dg/Walloca-2.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-2.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-2.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=2000 -O2" } */ void f (void *); Index: gcc/testsuite/gcc.dg/Walloca-6.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-6.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-6.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=256 -O2" } */ /* { dg-xfail-if "Currently broken but Andrew's work should fix this" { *-*-* } } */ Index: gcc/testsuite/gcc.dg/Walloca-11.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-11.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-11.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca -O2" } */ // Make sure we don't warn on VLA with -Walloca. Index: gcc/testsuite/gcc.dg/attr-alloc_size-7.c =================================================================== --- gcc/testsuite/gcc.dg/attr-alloc_size-7.c (revision 246278) +++ gcc/testsuite/gcc.dg/attr-alloc_size-7.c (working copy) @@ -3,6 +3,7 @@ detect and diagnose calls that attemnpt to allocate objects in excess of the maximum specified by -Walloc-size-larger-than=maximum. */ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-O2 -Wall -Walloc-size-larger-than=12345" } */ #define SIZE_MAX __SIZE_MAX__ Index: gcc/testsuite/gcc.dg/Wvla-larger-than-2.c =================================================================== --- gcc/testsuite/gcc.dg/Wvla-larger-than-2.c (revision 246278) +++ gcc/testsuite/gcc.dg/Wvla-larger-than-2.c (working copy) @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-require-effective-target stdint_types } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-O2 -Wvla-larger-than=40" } */ #include <stdint.h> Index: gcc/testsuite/gcc.dg/Walloca-3.c =================================================================== --- gcc/testsuite/gcc.dg/Walloca-3.c (revision 246278) +++ gcc/testsuite/gcc.dg/Walloca-3.c (working copy) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Walloca-larger-than=2000 -O2" } */ void f (void *); Index: gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c =================================================================== --- gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c (revision 246278) +++ gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c (working copy) @@ -1,5 +1,6 @@ /* PR c/7652 */ /* { dg-do compile } */ +/* { dg-require-effective-target alloca } */ /* { dg-options "-Wimplicit-fallthrough" } */ extern void bar (int); Index: gcc/testsuite/gcc.c-torture/compile/pr79413.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr79413.c (revision 246278) +++ gcc/testsuite/gcc.c-torture/compile/pr79413.c (working copy) @@ -1,3 +1,4 @@ +/* { dg-require-effective-target alloca } */ /* PR c/79413 */ void Index: gcc/testsuite/gcc.c-torture/compile/pr78439.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr78439.c (revision 246278) +++ gcc/testsuite/gcc.c-torture/compile/pr78439.c (working copy) @@ -1,3 +1,4 @@ +/* { dg-require-effective-target alloca } */ /* PR target/78439. */ enum demangle_component_type