https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70053
Jiu Fu Guo <guojiufu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #12 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> --- The generated code is a lot better on the trunk (both -O2 and -O3): .cfi_startproc dcmpuq 0,4,6 beq 0,.L4 blr .p2align 4,,15 .L4: fmr 5,7 fmr 4,6 fmr 3,7 fmr 2,6 blr And the expanded RTL like below, and cse/fwprop/dse optimize it as expected. 2: r119:TD=%2:TD 3: r120:TD=%4:TD 4: r121:TD=%6:TD 5: NOTE_INSN_FUNCTION_BEG 10: r122:CCFP=cmp(r120:TD,r121:TD) 11: pc={(r122:CCFP!=0)?L13:pc} REG_BR_PROB 708669604 12: NOTE_INSN_BASIC_BLOCK 4 6: r120:TD=r121:TD 7: r119:TD=r121:TD 13: L13: 14: NOTE_INSN_BASIC_BLOCK 5 15: r123:DI=r112:DI+0x10 16: [r123:DI]=r120:TD 17: [r112:DI]=r119:TD 18: r124:TD=[r112:DI] 19: r126:DI=r112:DI+0x10 20: r125:TD=[r126:DI] 21: r117:TD=r124:TD 22: r118:TD=r125:TD 26: %2:TD=r117:TD 27: %4:TD=r118:TD 28: use %2:TD 29: use %4:TD