/* PR tree-optimization/106243 */ /* { dg-do compile } */ /* { dg-options "-O2 -Wno-psabi -fdump-tree-optimized" } */ #define vector __attribute__((vector_size(4*sizeof(int)))) /* Test from PR. */ __attribute__((noipa)) int foo (int x) { return -x & 1; } /* Other test from PR. */ __attribute__((noipa)) int bar (int x) { return (0 - x) & 1; } /* Forward propogation. */ __attribute__((noipa)) int baz (int x) { x = -x; return x & 1; } /* Commutative property. */ __attribute__((noipa)) int qux (int x) { return 1 & -x; } /* Vector test case. */ __attribute__((noipa)) vector int waldo (vector int x) { return -x & 1; } /* Should not simplify. */ __attribute__((noipa)) int thud (int x) { return -x & 2; } /* Should not simplify. */ __attribute__((noipa)) int corge (int x) { return -x & -1; } /* { dg-final {scan-tree-dump-times "-" 2 "optimized" } } */