https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102906
--- Comment #9 from Christophe Lyon <clyon at gcc dot gnu.org> --- (In reply to Aldy Hernandez from comment #7) > > then size ivopts-4.o: > > text data bss dec hex filename > > 38 0 0 38 26 ivopts-4.o > > where the testcase expects text <= 36 > > Ohhhhh, this is an object size regression? This test seems very fragile. > Jump threading will alter code size, so any change in the threading rules > will likely have an effect on code size. I suggest you add > -fno-thread-jumps to the test and adjust the object-size test accordingly. I tried that, it doesn't change the generated code. > This is a testsuite regression that must be fixed by the target maintainers, > not a middle-end or tree-optimization regression. I've marked it as so. > Before your changes, we generated (with -mthumb -march=armv7-a+mp+sec+neon-fp16) tr2: push {r4, r5, r6, lr} cmp r1, #0 mov r4, r0 ble .L4 add r5, r0, r1, lsl #2 movs r6, #0 .L3: mov r0, r4 adds r4, r4, #4 bl foo cmp r4, r5 add r6, r6, r0 bne .L3 .L1: mov r0, r6 pop {r4, r5, r6, pc} .L4: movs r6, #0 b .L1 After the jump-threading change (r12-4526): tr2: push {r4, r5, r6, lr} cmp r1, #0 mov r4, r0 ble .L5 add r5, r0, r1, lsl #2 movs r6, #0 .L3: cmp r4, r5 bne .L4 .L1: mov r0, r6 pop {r4, r5, r6, pc} .L4: mov r0, r4 adds r4, r4, #4 bl foo add r6, r6, r0 b .L3 .L5: movs r6, #0 b .L1