https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81914
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Larger testcase with more cases. Some of them, e.g. in f3, are predicted roughly reasonably, but the > 95% predictions are just wrong in these cases. int f1 (long long a, long long b) { return a < b ? -1 : a > b; } int f2 (int a, int b) { if (a < b) return -1; if (a > b) return 1; return 0; } int f3 (int *a, int *b) { if (a[0] != b[0]) return a[0] > b[0] ? 1 : -1; if (a[1] != b[1]) return a[1] > b[1] ? 1 : -1; return 0; } int f4 (int *a, int *b) { if (a[0] > b[0]) return -1; if (a[0] < b[0]) return 1; if (a[1] > b[1]) return -1; if (a[1] < b[1]) return 1; if (a[2] > b[2]) return -1; if (a[2] < b[2]) return 1; return 0; }