]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite: Fix up pr111309-2.c on arm [PR111309]
authorJakub Jelinek <jakub@redhat.com>
Tue, 21 Nov 2023 09:03:26 +0000 (10:03 +0100)
committerJakub Jelinek <jakub@redhat.com>
Tue, 21 Nov 2023 09:03:26 +0000 (10:03 +0100)
ARM defaults to -fshort-enums and the following testcase FAILs there in 2
lines.  The difference is that in C++, E0 has enum E type, which normally
has unsigned int underlying type, so it isn't int nor something that
promotes to int, which is why we diagnose it (in C it is promoted to int).
But with -fshort-enums, the underlying type is unsigned char in that case,
which promotes to int just fine.

The following patch adjusts the expectations, such that we don't expect
it on arm or when people manually test with -fshort-enums.

2023-11-21  Jakub Jelinek  <jakub@redhat.com>

PR c/111309
* c-c++-common/pr111309-2.c (foo): Don't expect errors for C++ with
-fshort-enums if second argument is E0.

gcc/testsuite/c-c++-common/pr111309-2.c

index 535208b1cd3bbc76a4bdb87645807eb484ae477a..13e967353bf04c572b7ab74c7ce96f1205644637 100644 (file)
@@ -32,7 +32,7 @@ foo (void)
   __builtin_clzg (0U, 2LL);    /* { dg-error "does not have 'int' type" } */
   __builtin_clzg (0U, 2U);     /* { dg-error "does not have 'int' type" } */
   __builtin_clzg (0U, true);
-  __builtin_clzg (0U, E0);     /* { dg-error "does not have 'int' type" "" { target c++ } } */
+  __builtin_clzg (0U, E0);     /* { dg-error "does not have 'int' type" "" { target { c++ && { ! short_enums } } } } */
   __builtin_ctzg ();           /* { dg-error "too few arguments" } */
   __builtin_ctzg (0U, 1, 2);   /* { dg-error "too many arguments" } */
   __builtin_ctzg (0);          /* { dg-error "has signed type" } */
@@ -51,7 +51,7 @@ foo (void)
   __builtin_ctzg (0U, 2LL);    /* { dg-error "does not have 'int' type" } */
   __builtin_ctzg (0U, 2U);     /* { dg-error "does not have 'int' type" } */
   __builtin_ctzg (0U, true);
-  __builtin_ctzg (0U, E0);     /* { dg-error "does not have 'int' type" "" { target c++ } } */
+  __builtin_ctzg (0U, E0);     /* { dg-error "does not have 'int' type" "" { target { c++ && { ! short_enums } } } } */
   __builtin_clrsbg ();         /* { dg-error "too few arguments" } */
   __builtin_clrsbg (0, 1);     /* { dg-error "too many arguments" } */
   __builtin_clrsbg (0U);       /* { dg-error "has unsigned type" } */