On Tue, Jun 14, 2011 at 1:38 PM, Ira Rosen <ira.ro...@linaro.org> wrote: > On 14 June 2011 14:27, Richard Guenther <richard.guent...@gmail.com> wrote: > >>>> >>>> /* Mark the stmts that are involved in the pattern. */ >>>> - gsi_insert_before (&si, pattern_stmt, GSI_SAME_STMT); >>>> set_vinfo_for_stmt (pattern_stmt, >>>> new_stmt_vec_info (pattern_stmt, loop_vinfo, NULL)); >>>> + gimple_set_bb (pattern_stmt, gimple_bb (stmt)); >>>> >>>> do you really need this? >>> >>> Yes, there are a lot of uses of gimple_bb (stmt). Otherwise, we'd have >>> to check there that bb exists (or that this is not a pattern stmt) and >>> use the bb of the original statement if not. >> >> I see. It's not really uglier than the part where you have to special-case >> them when walking use-operands, so ... > > I think it is uglier, because there are 42 cases to handle instead of > a single place that you mentioned. (Probably not all the 42 can be > really reached with a pattern stmt, but still it's a lot).
Well, yes - I meant setting the BB isn't uglier which means setting BB is ok. Richard. > Thanks, > Ira > >> >> Still a lot better than when inserting them for real. >> >>>> Otherwise it looks reasonable. Btw, >>>> we can probably remove the simple DCE done in >>>> slpeel_tree_peel_loop_to_edge (remove_dead_stmts_from_loop) >>>> with this patch. >>> >>> I'll try that. >> >> Thanks, >> Richard. >> >>> Thanks, >>> Ira >>> >>>> >>>> Thanks, >>>> Richard. >>>> >>>>> Thanks, >>>>> Ira >>>>> >>>>> ChangeLog: >>>>> >>>>> * tree-vect-loop.c (vect_determine_vectorization_factor): Don't >>>>> remove irrelevant pattern statements. For irrelevant statements >>>>> check if it is the last statement of a detected pattern, use >>>>> corresponding pattern statement instead. >>>>> (destroy_loop_vec_info): No need to remove pattern statements, >>>>> only free stmt_vec_info. >>>>> (vect_transform_loop): For irrelevant statements check if it is >>>>> the last statement of a detected pattern, use corresponding >>>>> pattern statement instead. >>>>> * tree-vect-patterns.c (vect_pattern_recog_1): Don't insert >>>>> pattern statements. Set basic block for the new statement. >>>>> (vect_pattern_recog): Update documentation. >>>>> * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Scan >>>>> operands of pattern statements. >>>>> (vectorizable_call): Fix printing. In case of a pattern statement >>>>> use the lhs of the original statement when creating a dummy >>>>> statement to replace the original call. >>>>> (vect_analyze_stmt): For irrelevant statements check if it is >>>>> the last statement of a detected pattern, use corresponding >>>>> pattern statement instead. >>>>> * tree-vect-slp.c (vect_schedule_slp_instance): For pattern >>>>> statements use gsi of the original statement. >>>>> >>>> >>> >> >