/* { dg-do run } */ /* { dg-options "-O2 -fno-tree-forwprop" } */ extern void __attribute__((noreturn)) unreachable (void); int fle22 (int a) { unsigned i = a / 4; unsigned j = i - 2; if (j == 7) /* A dynamic range excludes a value from j for the rest of f1. */ return -1; if (i <= 2) /* This dynamic range cannot be combined or compared with that of j. */ return 0; if (i <= j) /* And so we couldn't compute this result. */ unreachable (); return 1; } int fle32 (int a) { unsigned i = a / 4; unsigned j = i - 3; if (j == 7) /* A dynamic range excludes a value from j for the rest of f1. */ return -1; if (i <= 2) /* This dynamic range cannot be combined or compared with that of j. */ return 0; if (i <= j) /* And so we couldn't compute this result. */ unreachable (); return 1; } int flt22 (int a) { unsigned i = a / 4; unsigned j = i - 2; if (j == 7) return -1; if (i <= 2) return 0; if (i < j) unreachable (); return 1; } int flt32 (int a) { unsigned i = a / 4; unsigned j = i - 3; if (j == 7) return -1; if (i <= 2) return 0; if (i < j) unreachable (); return 1; } int fgt22 (int a) { unsigned i = a / 4; unsigned j = i + 2; if (j == -7) return -1; if (i >= -3) return 0; if (i > j) unreachable (); return 1; } int fgt32 (int a) { unsigned i = a / 4; unsigned j = i + 3; if (j == -7) return -1; if (i >= -3) return 0; if (i > j) unreachable (); return 1; } int fge22 (int a) { unsigned i = a / 4; unsigned j = i + 2; if (j == -7) return -1; if (i >= -3) return 0; if (i >= j) unreachable (); return 1; } int fge32 (int a) { unsigned i = a / 4; unsigned j = i + 3; if (j == -7) return -1; if (i >= -3) return 0; if (i >= j) unreachable (); return 1; } int main (int argc, char *argv[]) { fle22 (argc); fle32 (argc); flt22 (argc); flt32 (argc); fgt22 (argc); fgt32 (argc); fge22 (argc); fge32 (argc); }