Tested x86_64-pc-linux-gnu, applying to trunk.
-- 8< --
Various tests were failing because they rely on non-constexpr functions
staying that way. The constexpr-diag tests are easier to just skip if
impcx; the reflection tests can be adjusted.
gcc/testsuite/ChangeLog:
* g++.dg/ext/constexpr-diag3.C: Skip if -fimplicit-constexpr.
* g++.dg/ext/constexpr-diag6.C: Likewise.
* g++.dg/reflect/annotations2.C: Handle -fimplicit-constexpr.
* g++.dg/reflect/p2996-21.C: Likewise.
* g++.dg/reflect/parm4.C: Likewise.
---
gcc/testsuite/g++.dg/ext/constexpr-diag3.C | 1 +
gcc/testsuite/g++.dg/ext/constexpr-diag6.C | 1 +
gcc/testsuite/g++.dg/reflect/annotations2.C | 4 ++--
gcc/testsuite/g++.dg/reflect/p2996-21.C | 2 +-
gcc/testsuite/g++.dg/reflect/parm4.C | 4 ++--
5 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-diag3.C
b/gcc/testsuite/g++.dg/ext/constexpr-diag3.C
index 4001b5c71ed..a5b7f6896f6 100644
--- a/gcc/testsuite/g++.dg/ext/constexpr-diag3.C
+++ b/gcc/testsuite/g++.dg/ext/constexpr-diag3.C
@@ -1,4 +1,5 @@
// { dg-do compile { target c++26 } }
+// { dg-skip-if "" { implicit_constexpr } }
struct A {
constexpr const char *data () const { return "foo"; }
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-diag6.C
b/gcc/testsuite/g++.dg/ext/constexpr-diag6.C
index fae3bd33573..a65314d2521 100644
--- a/gcc/testsuite/g++.dg/ext/constexpr-diag6.C
+++ b/gcc/testsuite/g++.dg/ext/constexpr-diag6.C
@@ -1,5 +1,6 @@
// { dg-do compile { target c++26 } }
// { dg-require-iconv "IBM1047" }
+// { dg-skip-if "" { implicit_constexpr } }
// { dg-additional-options "-fexec-charset=IBM1047" }
struct A {
diff --git a/gcc/testsuite/g++.dg/reflect/annotations2.C
b/gcc/testsuite/g++.dg/reflect/annotations2.C
index 77b581165f1..b3e09792c0e 100644
--- a/gcc/testsuite/g++.dg/reflect/annotations2.C
+++ b/gcc/testsuite/g++.dg/reflect/annotations2.C
@@ -16,8 +16,8 @@ namespace [[=7]] [[= 7 + 1]] [[= 7 + 2]] N
struct B { constexpr B () : b (42) {} int b; };
[[=B ()]] int d;
struct C { constexpr C () : c (42) {} int c; ~C () {} };
-[[=C ()]] int e; // { dg-error
"temporary of non-literal type 'C' in a constant expression" }
- // { dg-error
"annotation does not have structural type" "" { target *-*-* } .-1 }
+[[=C ()]] int e; // { dg-error
"temporary of non-literal type 'C' in a constant expression" "" { target { !
implicit_constexpr } } }
+ // { dg-error
"annotation does not have structural type" "" { target { ! implicit_constexpr }
} .-1 }
struct D { constexpr D () : d (42) {} volatile int d; };
[[=D ()]] int f; // { dg-error
"temporary of non-literal type 'D' in a constant expression" }
// { dg-error
"annotation does not have structural type" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/reflect/p2996-21.C
b/gcc/testsuite/g++.dg/reflect/p2996-21.C
index 478be47585e..71c716b8528 100644
--- a/gcc/testsuite/g++.dg/reflect/p2996-21.C
+++ b/gcc/testsuite/g++.dg/reflect/p2996-21.C
@@ -40,7 +40,7 @@ template <typename> struct TCls {
};
consteval { TCls<void>::sfn(); } // error: TCls<void>::S4 is not
enclosed by requires-clause lambda
-// { dg-error "call to non-'constexpr' function 'static void TCls<
<template-parameter-1-1> >::sfn\\\(\\\) requires \\\(<lambda>\\\)\\\(\\\)
\\\[with <template-parameter-1-1> = void\\\]'" "" { target *-*-* } .-1 }
+// { dg-error "call to non-'constexpr' function 'static void TCls<
<template-parameter-1-1> >::sfn\\\(\\\) requires \\\(<lambda>\\\)\\\(\\\)
\\\[with <template-parameter-1-1> = void\\\]'" "" { target { !
implicit_constexpr } } .-1 }
struct S5;
struct Cls {
diff --git a/gcc/testsuite/g++.dg/reflect/parm4.C
b/gcc/testsuite/g++.dg/reflect/parm4.C
index dd7606231b4..8867e6adbb6 100644
--- a/gcc/testsuite/g++.dg/reflect/parm4.C
+++ b/gcc/testsuite/g++.dg/reflect/parm4.C
@@ -15,10 +15,10 @@ struct S {
void
g (S s)
{
- int i0 = s.mfn0 (^^int); // { dg-error "consteval-only expressions" }
+ int i0 = s.mfn0 (^^int); // { dg-error "consteval-only expressions" "" {
target { ! implicit_constexpr } } }
constexpr int i1 = s.mfn1 (^^int);
constexpr int i2 = s.mfn2 (^^int);
- int i3 = s.mfn3 (42, ^^int); // { dg-error "consteval-only expressions" }
+ int i3 = s.mfn3 (42, ^^int); // { dg-error "consteval-only expressions" ""
{ target { ! implicit_constexpr } } }
info i4 = s.mfn4 (); // { dg-error "consteval-only variable" }
}
base-commit: 2f34d5c5df1d0382240574d68a499265ed96dbab
--
2.53.0