Commit b05e0233 by Richard Biener Committed by Richard Biener

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
parent 32f9be16
2013-11-21 Richard Biener <rguenther@suse.de> 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. * tree-ssa-forwprop.c (simplify_vce): New function.
(ssa_forward_propagate_and_combine): Call it. (ssa_forward_propagate_and_combine): Call it.
...@@ -2145,7 +2145,7 @@ parallelize_loops (void) ...@@ -2145,7 +2145,7 @@ parallelize_loops (void)
reduction_info_table_type reduction_list; reduction_info_table_type reduction_list;
struct obstack parloop_obstack; struct obstack parloop_obstack;
HOST_WIDE_INT estimated; HOST_WIDE_INT estimated;
LOC loop_loc; source_location loop_loc;
/* Do not parallelize loops in the functions created by parallelization. */ /* Do not parallelize loops in the functions created by parallelization. */
if (parallelized_function_p (cfun->decl)) if (parallelized_function_p (cfun->decl))
...@@ -2225,9 +2225,9 @@ parallelize_loops (void) ...@@ -2225,9 +2225,9 @@ parallelize_loops (void)
else else
fprintf (dump_file, "parallelizing inner loop %d\n",loop->header->index); fprintf (dump_file, "parallelizing inner loop %d\n",loop->header->index);
loop_loc = find_loop_location (loop); loop_loc = find_loop_location (loop);
if (loop_loc != UNKNOWN_LOC) if (loop_loc != UNKNOWN_LOCATION)
fprintf (dump_file, "\nloop at %s:%d: ", 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, gen_parallel_loop (loop, reduction_list,
n_threads, &niter_desc); n_threads, &niter_desc);
......
...@@ -661,7 +661,7 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters) ...@@ -661,7 +661,7 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters)
bool insert_after; bool insert_after;
tree init = build_int_cst (TREE_TYPE (niters), 0); tree init = build_int_cst (TREE_TYPE (niters), 0);
tree step = build_int_cst (TREE_TYPE (niters), 1); tree step = build_int_cst (TREE_TYPE (niters), 1);
LOC loop_loc; source_location loop_loc;
enum tree_code code; enum tree_code code;
orig_cond = get_loop_exit_condition (loop); orig_cond = get_loop_exit_condition (loop);
...@@ -691,9 +691,9 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters) ...@@ -691,9 +691,9 @@ slpeel_make_loop_iterate_ntimes (struct loop *loop, tree niters)
loop_loc = find_loop_location (loop); loop_loc = find_loop_location (loop);
if (dump_enabled_p ()) if (dump_enabled_p ())
{ {
if (LOCATION_LOCUS (loop_loc) != UNKNOWN_LOC) if (LOCATION_LOCUS (loop_loc) != UNKNOWN_LOCATION)
dump_printf (MSG_NOTE, "\nloop at %s:%d: ", LOC_FILE (loop_loc), dump_printf (MSG_NOTE, "\nloop at %s:%d: ", LOCATION_FILE (loop_loc),
LOC_LINE (loop_loc)); LOCATION_LINE (loop_loc));
dump_gimple_stmt (MSG_NOTE, TDF_SLIM, cond_stmt, 0); dump_gimple_stmt (MSG_NOTE, TDF_SLIM, cond_stmt, 0);
dump_printf (MSG_NOTE, "\n"); dump_printf (MSG_NOTE, "\n");
} }
...@@ -1057,7 +1057,7 @@ slpeel_tree_peel_loop_to_edge (struct loop *loop, ...@@ -1057,7 +1057,7 @@ slpeel_tree_peel_loop_to_edge (struct loop *loop,
basic_block new_exit_bb; basic_block new_exit_bb;
gimple_stmt_iterator gsi; gimple_stmt_iterator gsi;
edge exit_e = single_exit (loop); edge exit_e = single_exit (loop);
LOC loop_loc; source_location loop_loc;
tree cost_pre_condition = NULL_TREE; tree cost_pre_condition = NULL_TREE;
/* There are many aspects to how likely the first loop is going to be executed. /* 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 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, ...@@ -1365,7 +1365,7 @@ slpeel_tree_peel_loop_to_edge (struct loop *loop,
location is calculated. location is calculated.
Return the loop location if succeed and NULL if not. */ Return the loop location if succeed and NULL if not. */
LOC source_location
find_loop_location (struct loop *loop) find_loop_location (struct loop *loop)
{ {
gimple stmt = NULL; gimple stmt = NULL;
...@@ -1373,7 +1373,7 @@ find_loop_location (struct loop *loop) ...@@ -1373,7 +1373,7 @@ find_loop_location (struct loop *loop)
gimple_stmt_iterator si; gimple_stmt_iterator si;
if (!loop) if (!loop)
return UNKNOWN_LOC; return UNKNOWN_LOCATION;
stmt = get_loop_exit_condition (loop); stmt = get_loop_exit_condition (loop);
...@@ -1385,7 +1385,7 @@ find_loop_location (struct loop *loop) ...@@ -1385,7 +1385,7 @@ find_loop_location (struct loop *loop)
try to estimate the loop location */ try to estimate the loop location */
if (!loop->header) if (!loop->header)
return UNKNOWN_LOC; return UNKNOWN_LOCATION;
bb = loop->header; bb = loop->header;
...@@ -1396,7 +1396,7 @@ find_loop_location (struct loop *loop) ...@@ -1396,7 +1396,7 @@ find_loop_location (struct loop *loop)
return gimple_location (stmt); return gimple_location (stmt);
} }
return UNKNOWN_LOC; return UNKNOWN_LOCATION;
} }
...@@ -2224,7 +2224,7 @@ vect_loop_versioning (loop_vec_info loop_vinfo, ...@@ -2224,7 +2224,7 @@ vect_loop_versioning (loop_vec_info loop_vinfo,
loop_version (loop, cond_expr, &condition_bb, loop_version (loop, cond_expr, &condition_bb,
prob, prob, REG_BR_PROB_BASE - prob, true); 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 ()) && dump_enabled_p ())
{ {
if (version_alias) if (version_alias)
......
...@@ -48,23 +48,23 @@ along with GCC; see the file COPYING3. If not see ...@@ -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. /* Extract the location of the basic block in the source code.
Return the basic block location if succeed and NULL if not. */ Return the basic block location if succeed and NULL if not. */
LOC source_location
find_bb_location (basic_block bb) find_bb_location (basic_block bb)
{ {
gimple stmt = NULL; gimple stmt = NULL;
gimple_stmt_iterator si; gimple_stmt_iterator si;
if (!bb) if (!bb)
return UNKNOWN_LOC; return UNKNOWN_LOCATION;
for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si)) for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
{ {
stmt = gsi_stmt (si); stmt = gsi_stmt (si);
if (gimple_location (stmt) != UNKNOWN_LOC) if (gimple_location (stmt) != UNKNOWN_LOCATION)
return gimple_location (stmt); return gimple_location (stmt);
} }
return UNKNOWN_LOC; return UNKNOWN_LOCATION;
} }
......
...@@ -79,7 +79,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -79,7 +79,7 @@ along with GCC; see the file COPYING3. If not see
#include "dbgcnt.h" #include "dbgcnt.h"
/* Loop or bb location. */ /* Loop or bb location. */
LOC vect_location; source_location vect_location;
/* Vector mapping GIMPLE stmt to stmt_vec_info. */ /* Vector mapping GIMPLE stmt to stmt_vec_info. */
vec<vec_void_p> stmt_vec_info_vec; vec<vec_void_p> stmt_vec_info_vec;
...@@ -354,10 +354,11 @@ vectorize_loops (void) ...@@ -354,10 +354,11 @@ vectorize_loops (void)
{ {
loop_vec_info loop_vinfo; loop_vec_info loop_vinfo;
vect_location = find_loop_location (loop); vect_location = find_loop_location (loop);
if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOCATION
&& dump_enabled_p ()) && dump_enabled_p ())
dump_printf (MSG_NOTE, "\nAnalyzing loop at %s:%d\n", 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_vinfo = vect_analyze_loop (loop);
loop->aux = loop_vinfo; loop->aux = loop_vinfo;
...@@ -368,7 +369,7 @@ vectorize_loops (void) ...@@ -368,7 +369,7 @@ vectorize_loops (void)
if (!dbg_cnt (vect_loop)) if (!dbg_cnt (vect_loop))
break; break;
if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOCATION
&& dump_enabled_p ()) && dump_enabled_p ())
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
"loop vectorized\n"); "loop vectorized\n");
...@@ -390,7 +391,7 @@ vectorize_loops (void) ...@@ -390,7 +391,7 @@ vectorize_loops (void)
} }
} }
vect_location = UNKNOWN_LOC; vect_location = UNKNOWN_LOCATION;
statistics_counter_event (cfun, "Vectorized loops", num_vectorized_loops); statistics_counter_event (cfun, "Vectorized loops", num_vectorized_loops);
if (dump_enabled_p () if (dump_enabled_p ()
...@@ -549,7 +550,7 @@ increase_alignment (void) ...@@ -549,7 +550,7 @@ increase_alignment (void)
{ {
struct varpool_node *vnode; struct varpool_node *vnode;
vect_location = UNKNOWN_LOC; vect_location = UNKNOWN_LOCATION;
/* Increase the alignment of all global arrays for vectorization. */ /* Increase the alignment of all global arrays for vectorization. */
FOR_EACH_DEFINED_VARIABLE (vnode) FOR_EACH_DEFINED_VARIABLE (vnode)
......
...@@ -25,12 +25,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -25,12 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "target.h" #include "target.h"
#include "hash-table.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. */ /* Used for naming of new temporaries. */
enum vect_var_kind { enum vect_var_kind {
vect_simple_var, vect_simple_var,
...@@ -273,9 +267,6 @@ typedef struct _loop_vec_info { ...@@ -273,9 +267,6 @@ typedef struct _loop_vec_info {
/* Unrolling factor */ /* Unrolling factor */
int vectorization_factor; int vectorization_factor;
/* The loop location in the source. */
LOC loop_line_number;
/* Unknown DRs according to which loop was peeled. */ /* Unknown DRs according to which loop was peeled. */
struct data_reference *unaligned_dr; struct data_reference *unaligned_dr;
...@@ -343,6 +334,10 @@ typedef struct _loop_vec_info { ...@@ -343,6 +334,10 @@ typedef struct _loop_vec_info {
this. */ this. */
bool peeling_for_gaps; 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 /* Reductions are canonicalized so that the last operand is the reduction
operand. If this places a constant into RHS1, this decanonicalizes operand. If this places a constant into RHS1, this decanonicalizes
GIMPLE for other phases, so we must track when this has occurred and GIMPLE for other phases, so we must track when this has occurred and
...@@ -369,7 +364,6 @@ typedef struct _loop_vec_info { ...@@ -369,7 +364,6 @@ typedef struct _loop_vec_info {
#define LOOP_PEELING_FOR_ALIGNMENT(L) (L)->peeling_for_alignment #define LOOP_PEELING_FOR_ALIGNMENT(L) (L)->peeling_for_alignment
#define LOOP_VINFO_UNALIGNED_DR(L) (L)->unaligned_dr #define LOOP_VINFO_UNALIGNED_DR(L) (L)->unaligned_dr
#define LOOP_VINFO_MAY_MISALIGN_STMTS(L) (L)->may_misalign_stmts #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_MAY_ALIAS_DDRS(L) (L)->may_alias_ddrs
#define LOOP_VINFO_COMP_ALIAS_DDRS(L) (L)->comp_alias_ddrs #define LOOP_VINFO_COMP_ALIAS_DDRS(L) (L)->comp_alias_ddrs
#define LOOP_VINFO_GROUPED_STORES(L) (L)->grouped_stores #define LOOP_VINFO_GROUPED_STORES(L) (L)->grouped_stores
...@@ -925,7 +919,7 @@ unlimited_cost_model () ...@@ -925,7 +919,7 @@ unlimited_cost_model ()
} }
/* Source location */ /* Source location */
extern LOC vect_location; extern source_location vect_location;
/*-----------------------------------------------------------------*/ /*-----------------------------------------------------------------*/
/* Function prototypes. */ /* Function prototypes. */
...@@ -941,7 +935,7 @@ extern void vect_do_peeling_for_loop_bound (loop_vec_info, tree, tree, ...@@ -941,7 +935,7 @@ extern void vect_do_peeling_for_loop_bound (loop_vec_info, tree, tree,
unsigned int, bool); unsigned int, bool);
extern void vect_do_peeling_for_alignment (loop_vec_info, tree, extern void vect_do_peeling_for_alignment (loop_vec_info, tree,
unsigned int, bool); 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); extern bool vect_can_advance_ivs_p (loop_vec_info);
/* In tree-vect-stmts.c. */ /* In tree-vect-stmts.c. */
...@@ -1072,7 +1066,7 @@ extern void vect_detect_hybrid_slp (loop_vec_info); ...@@ -1072,7 +1066,7 @@ extern void vect_detect_hybrid_slp (loop_vec_info);
extern void vect_get_slp_defs (vec<tree> , slp_tree, extern void vect_get_slp_defs (vec<tree> , slp_tree,
vec<vec<tree> > *, int); 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 bb_vec_info vect_slp_analyze_bb (basic_block);
extern void vect_slp_transform_bb (basic_block); extern void vect_slp_transform_bb (basic_block);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment