https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91790
Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |ASSIGNED --- Comment #9 from Kewen Lin <linkw at gcc dot gnu.org> --- This issue won't be reproduced with latest trunk but I still can reproduce with the original reported revision. I checked the dumpings, it changes starting from inlining, the bg() doesn't have the loop of interest now. I tried to bisect, but it failed early on some intermediate commits with building errors on some file in cp. The root cause is that we have two slp nodes whose stmts are in the same group, they share the same first_stmt DR (_30) for the realign set up work. When transforming the node which doesn't have the first_stmt in the group, we can't guarantee the first_stmt DR has been initialized yet even we emit stmts late just before the last stmt in the node. Since we only get first_stmt_info_for_drptr set during BB vectorization, we can ensure compute_in_loop case won't have first_stmt_info_for_drptr different from first_stmt_info, meanwhile we can ensure it is impossible to get dr_explicit_realign_optimized during BB vectorization. Then as Richard pointed out in PR92534, we can setup realignment later after we get the fixed first_stmt_info_for_drptr DR when we have different first_stmt_info.