aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2022-12-02 14:43:26 -0500
committerMarek Polacek <polacek@redhat.com>2022-12-02 14:47:45 -0500
commit1998db0fa1f78e373c88daea8bb339d32b41e6aa (patch)
tree1d71f2b4b5207c42ad0cc8b563f85ee0ff2e8f0f /gcc
parentd19aa6af6634b1e97f38431ad091f3b3f12baf2f (diff)
downloadgcc-1998db0fa1f78e373c88daea8bb339d32b41e6aa.zip
gcc-1998db0fa1f78e373c88daea8bb339d32b41e6aa.tar.gz
gcc-1998db0fa1f78e373c88daea8bb339d32b41e6aa.tar.bz2
testsuite: Adjust dg-error for -fimplicit-constexpr
Some of the new tests were failing with -fimplicit-constexpr. This patch adjusts the expected diagnostic. Tested with GXX_TESTSUITE_STDS=98,11,14,17,20,23 make check-c++ RUNTESTFLAGS="--target_board=unix\{,-fimplicit-constexpr\} dg.exp=spaceship-eq3.C" gcc/testsuite/ChangeLog: * g++.dg/cpp0x/constexpr-ex1.C: Adjust dg-error. * g++.dg/cpp23/constexpr-nonlit10.C: Adjust dg-warning. * g++.dg/cpp23/constexpr-nonlit11.C: Likewise. * g++.dg/cpp2a/spaceship-eq3.C: Add dg-error.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp23/constexpr-nonlit10.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp23/constexpr-nonlit11.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C1
4 files changed, 8 insertions, 7 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
index 48281a4..383d38a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
@@ -87,8 +87,8 @@ struct resource {
}
};
constexpr resource f(resource d)
-{ return d; } // { dg-error "non-.constexpr." "" { target { { ! implicit_constexpr } && c++20_down } } }
-// { dg-error "non-.constexpr." "" { target c++23 } .-2 }
-constexpr resource d = f(9); // { dg-message ".constexpr." "" { target { ! implicit_constexpr } } }
+{ return d; } // { dg-error "non-.constexpr." "" { target { { { ! implicit_constexpr } && c++20_down } || c++11_only } } }
+// { dg-error "non-.constexpr." "" { target { c++23 && { ! implicit_constexpr } } } .-2 }
+constexpr resource d = f(9); // { dg-message ".constexpr." "" { target { { ! implicit_constexpr } || c++11_only } } }
// 4.4 floating-point constant expressions
diff --git a/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit10.C b/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit10.C
index 48706f7..31d4b87 100644
--- a/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit10.C
+++ b/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit10.C
@@ -11,13 +11,13 @@ struct NonLiteral {
// C++23: It is possible to write a constexpr function for which no
// invocation satisfies the requirements of a core constant expression.
constexpr NonLiteral
-fn0 (int) // { dg-warning "invalid return type" }
+fn0 (int) // { dg-warning "invalid return type" "" { target { ! implicit_constexpr } } }
{
return NonLiteral{};
}
constexpr int
-fn1 (NonLiteral) // { dg-warning "invalid type" }
+fn1 (NonLiteral) // { dg-warning "invalid type" "" { target { ! implicit_constexpr } } }
{
return 42;
}
diff --git a/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit11.C b/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit11.C
index a7114bc..e08809f 100644
--- a/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit11.C
+++ b/gcc/testsuite/g++.dg/cpp23/constexpr-nonlit11.C
@@ -25,10 +25,10 @@ struct X {
struct S {
X x;
// Calls a non-constexpr constructor X::X(int).
- constexpr S(int i) : x(i) { } // { dg-warning "call to" }
+ constexpr S(int i) : x(i) { } // { dg-warning "call to" "" { target { ! implicit_constexpr } } }
S(int, int) { }
// Target constructor isn't constexpr.
- constexpr S() : S(42, 42) { } // { dg-warning "call to" }
+ constexpr S() : S(42, 42) { } // { dg-warning "call to" "" { target { ! implicit_constexpr } } }
};
namespace N1 {
diff --git a/gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C b/gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
index 69eaa7b..246839f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
+++ b/gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
@@ -9,6 +9,7 @@ struct D
A i;
bool operator==(const D& x) const = default; // { dg-error "A::operator==" "" { target c++20_down } }
bool operator!=(const D& z) const = default; // { dg-error "D::operator==" "" { target c++20_down } }
+// { dg-error "called" "" { target { c++23 && implicit_constexpr } } .-1 }
};
constexpr D d{A()};