diff options
author | Richard Biener <rguenther@suse.de> | 2013-11-21 13:57:40 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-11-21 13:57:40 +0000 |
commit | b05e02332f86e3168b96708263a88ec8f07c5e5a (patch) | |
tree | 8e642d44a66bc1192bf5b9d678473043c95ac1e7 | |
parent | 32f9be169ca3c5e1c56735c8b1e076570d56389c (diff) | |
download | gcc-b05e02332f86e3168b96708263a88ec8f07c5e5a.zip gcc-b05e02332f86e3168b96708263a88ec8f07c5e5a.tar.gz gcc-b05e02332f86e3168b96708263a88ec8f07c5e5a.tar.bz2 |
tree-vectorizer.h (LOC, [...]): Remove wrappers and fix all users.
2013-11-21 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
LOC_LINE): Remove wrappers and fix all users.
(struct _loop_vec_info): Remove loop_line_number member.
(LOOP_VINFO_LOC): Remove.
* tree-parloops.c, tree-vect-loop-manip.c, tree-vect-slp.c,
tree-vectorizer.c: Fix users of LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE
and LOC_LINE.
From-SVN: r205216
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/tree-parloops.c | 6 | ||||
-rw-r--r-- | gcc/tree-vect-loop-manip.c | 20 | ||||
-rw-r--r-- | gcc/tree-vect-slp.c | 8 | ||||
-rw-r--r-- | gcc/tree-vectorizer.c | 13 | ||||
-rw-r--r-- | gcc/tree-vectorizer.h | 20 |
6 files changed, 41 insertions, 36 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9c4cc5..766421d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,15 @@ 2013-11-21 Richard Biener <rguenther@suse.de> + * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE, + LOC_LINE): Remove wrappers and fix all users. + (struct _loop_vec_info): Remove loop_line_number member. + (LOOP_VINFO_LOC): Remove. + * tree-parloops.c, tree-vect-loop-manip.c, tree-vect-slp.c, + tree-vectorizer.c: Fix users of LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE + and LOC_LINE. + +2013-11-21 Richard Biener <rguenther@suse.de> + * tree-ssa-forwprop.c (simplify_vce): New function. (ssa_forward_propagate_and_combine): Call it. diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index d627c69..78b35df 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -2145,7 +2145,7 @@ parallelize_loops (void) reduction_info_table_type reduction_list; struct obstack parloop_obstack; HOST_WIDE_INT estimated; - LOC loop_loc; + source_location loop_loc; /* Do not parallelize loops in the functions created by parallelization. */ if (parallelized_function_p (cfun->decl)) @@ -2225,9 +2225,9 @@ parallelize_loops (void) else fprintf (dump_file, "parallelizing inner loop %d\n",loop->header->index); loop_loc = find_loop_location (loop); - if (loop_loc != UNKNOWN_LOC) + if (loop_loc != UNKNOWN_LOCATION) fprintf (dump_file, "\nloop at %s:%d: ", - LOC_FILE (loop_loc), LOC_LINE (loop_loc)); + LOCATION_FILE (loop_loc), LOCATION_LINE (loop_loc)); } gen_parallel_loop (loop, reduction_list, n_threads, &niter_desc); diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index a03b54c..f5192e8 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -661,7 +661,7 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters) bool insert_after; tree init = build_int_cst (TREE_TYPE (niters), 0); tree step = build_int_cst (TREE_TYPE (niters), 1); - LOC loop_loc; + source_location loop_loc; enum tree_code code; orig_cond = get_loop_exit_condition (loop); @@ -691,9 +691,9 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters) loop_loc = find_loop_location (loop); if (dump_enabled_p ()) { - if (LOCATION_LOCUS (loop_loc) != UNKNOWN_LOC) - dump_printf (MSG_NOTE, "\nloop at %s:%d: ", LOC_FILE (loop_loc), - LOC_LINE (loop_loc)); + if (LOCATION_LOCUS (loop_loc) != UNKNOWN_LOCATION) + dump_printf (MSG_NOTE, "\nloop at %s:%d: ", LOCATION_FILE (loop_loc), + LOCATION_LINE (loop_loc)); dump_gimple_stmt (MSG_NOTE, TDF_SLIM, cond_stmt, 0); dump_printf (MSG_NOTE, "\n"); } @@ -1057,7 +1057,7 @@ slpeel_tree_peel_loop_to_edge (struct loop *loop, basic_block new_exit_bb; gimple_stmt_iterator gsi; edge exit_e = single_exit (loop); - LOC loop_loc; + source_location loop_loc; tree cost_pre_condition = NULL_TREE; /* There are many aspects to how likely the first loop is going to be executed. Without histogram we can't really do good job. Simply set it to @@ -1365,7 +1365,7 @@ slpeel_tree_peel_loop_to_edge (struct loop *loop, location is calculated. Return the loop location if succeed and NULL if not. */ -LOC +source_location find_loop_location (struct loop *loop) { gimple stmt = NULL; @@ -1373,7 +1373,7 @@ find_loop_location (struct loop *loop) gimple_stmt_iterator si; if (!loop) - return UNKNOWN_LOC; + return UNKNOWN_LOCATION; stmt = get_loop_exit_condition (loop); @@ -1385,7 +1385,7 @@ find_loop_location (struct loop *loop) try to estimate the loop location */ if (!loop->header) - return UNKNOWN_LOC; + return UNKNOWN_LOCATION; bb = loop->header; @@ -1396,7 +1396,7 @@ find_loop_location (struct loop *loop) return gimple_location (stmt); } - return UNKNOWN_LOC; + return UNKNOWN_LOCATION; } @@ -2224,7 +2224,7 @@ vect_loop_versioning (loop_vec_info loop_vinfo, loop_version (loop, cond_expr, &condition_bb, prob, prob, REG_BR_PROB_BASE - prob, true); - if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC + if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOCATION && dump_enabled_p ()) { if (version_alias) diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index bd9e4e2..c2e4912 100644 --- a/gcc/tree-vect-slp.c +++ b/gcc/tree-vect-slp.c @@ -48,23 +48,23 @@ along with GCC; see the file COPYING3. If not see /* Extract the location of the basic block in the source code. Return the basic block location if succeed and NULL if not. */ -LOC +source_location find_bb_location (basic_block bb) { gimple stmt = NULL; gimple_stmt_iterator si; if (!bb) - return UNKNOWN_LOC; + return UNKNOWN_LOCATION; for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si)) { stmt = gsi_stmt (si); - if (gimple_location (stmt) != UNKNOWN_LOC) + if (gimple_location (stmt) != UNKNOWN_LOCATION) return gimple_location (stmt); } - return UNKNOWN_LOC; + return UNKNOWN_LOCATION; } diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index fea7086..7416aaa 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -79,7 +79,7 @@ along with GCC; see the file COPYING3. If not see #include "dbgcnt.h" /* Loop or bb location. */ -LOC vect_location; +source_location vect_location; /* Vector mapping GIMPLE stmt to stmt_vec_info. */ vec<vec_void_p> stmt_vec_info_vec; @@ -354,10 +354,11 @@ vectorize_loops (void) { loop_vec_info loop_vinfo; vect_location = find_loop_location (loop); - if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC + if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOCATION && dump_enabled_p ()) dump_printf (MSG_NOTE, "\nAnalyzing loop at %s:%d\n", - LOC_FILE (vect_location), LOC_LINE (vect_location)); + LOCATION_FILE (vect_location), + LOCATION_LINE (vect_location)); loop_vinfo = vect_analyze_loop (loop); loop->aux = loop_vinfo; @@ -368,7 +369,7 @@ vectorize_loops (void) if (!dbg_cnt (vect_loop)) break; - if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC + if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOCATION && dump_enabled_p ()) dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, "loop vectorized\n"); @@ -390,7 +391,7 @@ vectorize_loops (void) } } - vect_location = UNKNOWN_LOC; + vect_location = UNKNOWN_LOCATION; statistics_counter_event (cfun, "Vectorized loops", num_vectorized_loops); if (dump_enabled_p () @@ -549,7 +550,7 @@ increase_alignment (void) { struct varpool_node *vnode; - vect_location = UNKNOWN_LOC; + vect_location = UNKNOWN_LOCATION; /* Increase the alignment of all global arrays for vectorization. */ FOR_EACH_DEFINED_VARIABLE (vnode) diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 1297fab..23c4d88 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -25,12 +25,6 @@ along with GCC; see the file COPYING3. If not see #include "target.h" #include "hash-table.h" -typedef source_location LOC; -#define UNKNOWN_LOC UNKNOWN_LOCATION -#define EXPR_LOC(e) EXPR_LOCATION (e) -#define LOC_FILE(l) LOCATION_FILE (l) -#define LOC_LINE(l) LOCATION_LINE (l) - /* Used for naming of new temporaries. */ enum vect_var_kind { vect_simple_var, @@ -273,9 +267,6 @@ typedef struct _loop_vec_info { /* Unrolling factor */ int vectorization_factor; - /* The loop location in the source. */ - LOC loop_line_number; - /* Unknown DRs according to which loop was peeled. */ struct data_reference *unaligned_dr; @@ -343,6 +334,10 @@ typedef struct _loop_vec_info { this. */ bool peeling_for_gaps; + /* When the number of iterations is not a multiple of the vector size + we need to peel off iterations at the end to form an epilogue loop. */ + bool peeling_for_niter; + /* Reductions are canonicalized so that the last operand is the reduction operand. If this places a constant into RHS1, this decanonicalizes GIMPLE for other phases, so we must track when this has occurred and @@ -369,7 +364,6 @@ typedef struct _loop_vec_info { #define LOOP_PEELING_FOR_ALIGNMENT(L) (L)->peeling_for_alignment #define LOOP_VINFO_UNALIGNED_DR(L) (L)->unaligned_dr #define LOOP_VINFO_MAY_MISALIGN_STMTS(L) (L)->may_misalign_stmts -#define LOOP_VINFO_LOC(L) (L)->loop_line_number #define LOOP_VINFO_MAY_ALIAS_DDRS(L) (L)->may_alias_ddrs #define LOOP_VINFO_COMP_ALIAS_DDRS(L) (L)->comp_alias_ddrs #define LOOP_VINFO_GROUPED_STORES(L) (L)->grouped_stores @@ -925,7 +919,7 @@ unlimited_cost_model () } /* Source location */ -extern LOC vect_location; +extern source_location vect_location; /*-----------------------------------------------------------------*/ /* Function prototypes. */ @@ -941,7 +935,7 @@ extern void vect_do_peeling_for_loop_bound (loop_vec_info, tree, tree, unsigned int, bool); extern void vect_do_peeling_for_alignment (loop_vec_info, tree, unsigned int, bool); -extern LOC find_loop_location (struct loop *); +extern source_location find_loop_location (struct loop *); extern bool vect_can_advance_ivs_p (loop_vec_info); /* In tree-vect-stmts.c. */ @@ -1072,7 +1066,7 @@ extern void vect_detect_hybrid_slp (loop_vec_info); extern void vect_get_slp_defs (vec<tree> , slp_tree, vec<vec<tree> > *, int); -extern LOC find_bb_location (basic_block); +extern source_location find_bb_location (basic_block); extern bb_vec_info vect_slp_analyze_bb (basic_block); extern void vect_slp_transform_bb (basic_block); |