https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79390
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- The testcase for RTL if-conversion part: --cut here-- extern double A[32]; int foo (void) { double t = A[0]; int jp = 0; int i; for (i = 0; i < 32; i++) { double ab = A[i]; if (ab > t) { jp = i; t = ab; } } return jp; } --cut here-- gcc -O2: ... .L5: movsd A(,%rdx,8), %xmm0 ucomisd %xmm1, %xmm0 jbe .L3 movapd %xmm0, %xmm1 movl %edx, %eax .L3: addq $1, %rdx .L2: cmpq $32, %rdx jne .L5 There is no difference w/ and w/o -fno-split-paths with the above testcase.