diff gcc/testsuite/g++.dg/warn/noeffect4.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/warn/noeffect4.C	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,88 @@
+// { dg-do compile }
+// { dg-options "-Wall" }
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 2 Sep 2003 <nathan@codesourcery.com>
+
+// PR 12037.
+
+struct X
+{
+  int operator+(int);
+  int operator-(int);
+  int operator*(int);
+  int operator/(int);
+  int operator%(int);
+  int operator>>(int);
+  int operator<<(int);
+  int operator&(int);
+  int operator|(int);
+  int operator^(int);
+  int operator&&(int);
+  int operator||(int);
+  int operator==(int);
+  int operator!=(int);
+  int operator<(int);
+  int operator<=(int);
+  int operator>(int);
+  int operator>=(int);
+  int operator*();
+  int operator!();
+  int operator~();
+  int operator++();
+  int operator--();
+  int operator++(int);
+  int operator--(int);
+  int operator()();
+  int operator,(int);
+  X *operator->();
+  operator int () const;
+  int m;
+  virtual ~X ();
+  X &Foo ();
+};
+struct Y : X 
+{
+};
+
+template<int I> void Foo (X &x)
+{
+  x + I;
+  x - I;
+  x * I;
+  x / I;
+  x % I;
+  x >> I;
+  x << I;
+  x & I;
+  x | I;
+  x && I;
+  x || I;
+  x == I;
+  x != I;
+  x < I;
+  x <= I;
+  x > I;
+  x >= I;
+  *x;
+  !x;
+  ~x;
+  x++;
+  x--;
+  ++x;
+  --x;
+  x ();
+  x, I;
+  x->m;
+  static_cast<int> (x);
+  dynamic_cast<Y &> (x);
+  reinterpret_cast<int> (x.Foo ()); // { dg-error "invalid cast" }
+  const_cast<X &> (x.Foo ());       // { dg-warning "not used" }
+  
+  reinterpret_cast<int *> (&x);// { dg-warning "no effect" }
+  const_cast<X &> (x);         // { dg-warning "no effect" }
+  sizeof (x++);                // { dg-warning "no effect" }
+  __alignof__ (x++);           // { dg-warning "no effect" }
+}
+
+template void Foo<4> (X&);     // { dg-message "required" }