Mercurial > hg > CbC > CbC_gcc
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" }