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). 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. >>>> >>> >> >