aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2023-10-25 09:03:52 -0400
committerPatrick Palka <ppalka@redhat.com>2023-10-25 09:03:52 -0400
commitfb28d5c6b0a47ab704290d0122f978d1e6346551 (patch)
tree483db80fc898d266bbf79130673fd215dd0ecf74
parentac66744d94226a2763690dee2bfe4805b82bf90e (diff)
downloadgcc-fb28d5c6b0a47ab704290d0122f978d1e6346551.zip
gcc-fb28d5c6b0a47ab704290d0122f978d1e6346551.tar.gz
gcc-fb28d5c6b0a47ab704290d0122f978d1e6346551.tar.bz2
c++: add fixed testcase [PR99804]
We accept the non-dependent call f(e) here ever since the NON_DEPENDENT_EXPR removal patch r14-4793-gdad311874ac3b3. I haven't looked closely into why but I suspect wrapping 'e' in a NON_DEPENDENT_EXPR was causing the argument conversion to misbehave. PR c++/99804 gcc/testsuite/ChangeLog: * g++.dg/template/enum9.C: New test.
-rw-r--r--gcc/testsuite/g++.dg/template/enum9.C12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/enum9.C b/gcc/testsuite/g++.dg/template/enum9.C
new file mode 100644
index 0000000..c992cd5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/enum9.C
@@ -0,0 +1,12 @@
+// PR c++/99804
+
+struct S {
+ enum E { A, B } e : 1;
+ void f(E);
+ template<class> void g() { f(e); }
+};
+
+int main() {
+ S s;
+ s.g<int>();
+}