PR c++/62096 - unexpected warning overflow in implicit constant conversion
authormsebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Mar 2016 04:20:07 +0000 (04:20 +0000)
committermsebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Mar 2016 04:20:07 +0000 (04:20 +0000)
gcc/testsuite/ChangeLog:
2016-03-08  Martin Sebor  <msebor@redhat.com>

        PR c++/62096
        * g++.dg/warn/overflow-warn-7.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234075 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/overflow-warn-7.C [new file with mode: 0644]

index 40e9b52..baf029d 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-08  Martin Sebor  <msebor@redhat.com>
+
+       PR c++/62096
+       * g++.dg/warn/overflow-warn-7.C: New test.
+
 2016-03-08  Jason Merrill  <jason@redhat.com>
 
        * lib/g++-dg.exp (g++-dg-runtest): Handle "concepts" in std list.
diff --git a/gcc/testsuite/g++.dg/warn/overflow-warn-7.C b/gcc/testsuite/g++.dg/warn/overflow-warn-7.C
new file mode 100644 (file)
index 0000000..b536563
--- /dev/null
@@ -0,0 +1,17 @@
+// PR c/62096 - unexpected warning overflow in implicit constant conversion
+// { dg-do compile { target c++11 } }
+
+enum E {
+    E_val  = 1,
+};
+
+inline constexpr E operator~(E e)
+{
+  return E(~static_cast<int>(e));
+}
+
+int main()
+{
+  int val = ~E_val;   // { dg-bogus "overflow in implicit constant conversion" }
+  (void) val;
+}