https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88044
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Between r266170 and r266171 the difference was in veclower21 dump with -O3: --- transfer_intrinsic_3.f90.168t.veclower21_ 2019-01-18 16:34:47.478873237 +0100 +++ transfer_intrinsic_3.f90.168t.veclower21 2019-01-18 16:35:09.503515118 +0100 @@ -370,14 +370,7 @@ main (integer(kind=4) argc, character(ki __builtin_free (_27); parm.10 ={v} {CLOBBER}; ivtmp.52_75 = ivtmp.52_82 + 1; - if (ivtmp.52_75 == 3) - goto <bb 19>; [12.36%] - else - goto <bb 5>; [87.64%] - - <bb 19> [local count: 1069422300]: - __builtin_free (_7); - return 0; + goto <bb 5>; [100.00%] } and, if I revert the r266171 change on current trunk, the difference between f951 with the patch reverted and vanilla trunk is (again -O3, powerpc64le-linux): --- transfer_intrinsic_3.f90.161t.cunroll_ 2019-01-18 17:14:06.625536698 +0100 +++ transfer_intrinsic_3.f90.161t.cunroll 2019-01-18 17:14:24.992238353 +0100 @@ -55,8 +55,10 @@ Number of blocks in CFG: 46 Number of blocks to update: 11 ( 24%) +Removing basic block 21 Removing basic block 32 Removing basic block 41 +Merging blocks 20 and 23 Merging blocks 30 and 33 Removing basic block 34 Removing basic block 36 @@ -178,8 +180,8 @@ main (integer(kind=4) argc, character(ki pretmp_65 = &MEM[(character(kind=1)[0:][1:1] *)_7][0]; <bb 7> [local count: 8656061039]: - # n_63 = PHI <0(30), _28(23)> - # ivtmp_13 = PHI <4(30), ivtmp_31(23)> + # n_63 = PHI <0(30), _28(20)> + # ivtmp_13 = PHI <4(30), ivtmp_31(20)> _19 = n_63 + -1; _20 = (integer(kind=8)) _19; _22 = MAX_EXPR <_20, 0>; @@ -264,18 +266,8 @@ main (integer(kind=4) argc, character(ki parm.10 ={v} {CLOBBER}; _28 = n_63 + 1; ivtmp_31 = ivtmp_13 - 1; - if (ivtmp_31 == 0) - goto <bb 21>; [12.36%] - else - goto <bb 23>; [87.64%] - - <bb 23> [local count: 7582748748]: goto <bb 7>; [100.00%] - <bb 21> [local count: 1069422300]: - __builtin_free (_7); - return 0; - } so in both cases, the loop condition is optimized out.