/* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized-raw" } */ _Bool eqeq0(unsigned x) { return x == (x == 0); } _Bool eqeq1(unsigned x) { return x == (x == 1); } _Bool eqeq2(unsigned x) { return x == (x == 2); } _Bool neeq0(unsigned x) { return x != (x == 0); } _Bool neeq1(unsigned x) { return x != (x == 1); } _Bool neeq2(unsigned x) { return x != (x == 2); } _Bool eqne0(unsigned x) { return x == (x != 0); } _Bool eqne1(unsigned x) { return x == (x != 1); } _Bool eqne2(unsigned x) { return x == (x != 2); } _Bool nene0(unsigned x) { return x != (x != 0); } _Bool nene1(unsigned x) { return x != (x != 1); } _Bool nene2(unsigned x) { return x != (x != 2); } /* All of these functions should have removed the inner most comparison which means all of the conversions from bool to unsigned should have been removed too. */ /* { dg-final { scan-tree-dump-not "nop_expr," "optimized"} } */