// { dg-do compile}
// { dg-options "-Wlogical-op" }
-enum { a, b };
+enum { a, b1, b2 };
enum testenum { t1, t2};
void foo()
{
- if ( f && b ) // { dg-warning "always evaluate as" }
+ if ( f && b2 ) // { dg-warning "always evaluate as" }
do_something(1);
- if ( c && b ) // { dg-warning "always evaluate as" }
+ if ( c && b2 ) // { dg-warning "always evaluate as" }
do_something(2);
- if ( b && c == a ) // { dg-bogus "always evaluate as" }
+ if ( b2 && c == a ) // { dg-bogus "always evaluate as" }
do_something(101);
if ( 1 && c )
do_something(102); // { dg-bogus "always evaluate as" }
- if ( t2 && b ) // { dg-bogus "always evaluate as" }
+ if ( t2 && b2 ) // { dg-bogus "always evaluate as" }
do_something(103);
if ( true && c == a ) // { dg-bogus "always evaluate as" }
do_something(104);
- if ( b && true ) // { dg-bogus "always evaluate as" }
+ if ( b2 && true ) // { dg-bogus "always evaluate as" }
do_something(105);
}
-// { dg-do compile}
-// { dg-options "-Winvariant-expr" }
-
-enum { a, b };
-
-enum testenum { t1, t2};
-
-extern int c;
-extern bool bool_a, bool_b;
-
-template<typename Enum>
-class QFlags
-{
-public:
- typedef void **Zero;
- int i;
- inline QFlags(Enum f) : i(f) {}
-
- inline operator int() const
- { return i;}
-
-};
-
-QFlags<testenum> f(t2);
-extern void do_something(int);
-
-extern testenum testa();
-void foo()
-{
- if ( f && b ) // { dg-warning "always evaluate as" }
- do_something(1);
- if ( c && b ) // { dg-warning "always evaluate as" }
- do_something(2);
-
- if ( b && c == a ) // { dg-bogus "always evaluate as" }
- do_something(101);
- if ( 1 && c )
- do_something(102); // { dg-bogus "always evaluate as" }
- if ( t2 && b ) // { dg-bogus "always evaluate as" }
- do_something(103);
- if ( true && c == a ) // { dg-bogus "always evaluate as" }
- do_something(104);
- if ( b && true ) // { dg-bogus "always evaluate as" }
- do_something(105);
-}
if ( b && c == a ) /* { dg-bogus "always evaluate as" } */
(void)testa();
- if ( 1 && c ) /* { dg-warning "always evaluate as" } */
+ if ( 1 && c ) /* { dg-bogus "always evaluate as" } */
(void)testa();
- if ( t2 && b ) /* { dg-warning "always evaluate as" } */
+ if ( t2 && b ) /* { dg-bogus "always evaluate as" } */
(void)testa();
- if ( 0 && c == a ) /* { dg-warning "always evaluate as" } */
+ if ( 0 && c == a ) /* { dg-bogus "always evaluate as" } */
(void)testa();
- if ( b && 1 ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-}
-/*
- { dg-do compile}
- { dg-options "-Winvariant-expr" }
-*/
-
-enum { a, ba, b };
-
-enum testenum { t1, t2};
-
-extern int c;
-extern char bool_a, bool_b;
-
-extern int testa();
-
-void foo()
-{
- if ( testa() && b ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
- if ( c && b ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
- if ( c && 0x42 ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
- if ( c && 0x42 ) /* { dg-warning "always evaluate as" } */
- (void) testa();
-
- if ( c && 0x80 >>6) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
-
- if ( b && c == a ) /* { dg-bogus "always evaluate as" } */
- (void)testa();
-
- if ( 1 && c ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
- if ( t2 && b ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
- if ( 0 && c == a ) /* { dg-warning "always evaluate as" } */
- (void)testa();
-
- if ( b && 1 ) /* { dg-warning "always evaluate as" } */
+ if ( b && 1 ) /* { dg-bogus "always evaluate as" } */
(void)testa();
}