diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2013-03-21 22:11:56 +0100 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2013-03-21 21:11:56 +0000 |
commit | 6f37411dcade5f7b3e326ab6e80623034a0b5b59 (patch) | |
tree | 1f657498583f4dae2746478be86a85d0c6898b82 /gcc | |
parent | 511ef689f442669bf1f046365985b0a67f9531db (diff) | |
download | gcc-6f37411dcade5f7b3e326ab6e80623034a0b5b59.zip gcc-6f37411dcade5f7b3e326ab6e80623034a0b5b59.tar.gz gcc-6f37411dcade5f7b3e326ab6e80623034a0b5b59.tar.bz2 |
tree-pass.h (PROP_gimple_lvec): New.
2013-03-21 Marc Glisse <marc.glisse@inria.fr>
* tree-pass.h (PROP_gimple_lvec): New.
* passes.c (dump_properties): Handle PROP_gimple_lvec.
(init_optimization_passes): Move pass_lower_vector.
* tree-vect-generic.c (gate_expand_vector_operations_ssa): Test
PROP_gimple_lvec.
(pass_lower_vector): Provide PROP_gimple_lvec.
(pass_lower_vector_ssa): Likewise.
* cfgexpand.c (pass_expand): Require PROP_gimple_lvec.
From-SVN: r196890
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 3 | ||||
-rw-r--r-- | gcc/passes.c | 4 | ||||
-rw-r--r-- | gcc/tree-pass.h | 1 | ||||
-rw-r--r-- | gcc/tree-vect-generic.c | 6 |
5 files changed, 20 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29425a8..f06feff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2013-03-21 Marc Glisse <marc.glisse@inria.fr> + + * tree-pass.h (PROP_gimple_lvec): New. + * passes.c (dump_properties): Handle PROP_gimple_lvec. + (init_optimization_passes): Move pass_lower_vector. + * tree-vect-generic.c (gate_expand_vector_operations_ssa): Test + PROP_gimple_lvec. + (pass_lower_vector): Provide PROP_gimple_lvec. + (pass_lower_vector_ssa): Likewise. + * cfgexpand.c (pass_expand): Require PROP_gimple_lvec. + 2013-03-21 Mark Wielaard <mjw@redhat.com> * dwarf2out.c (size_of_aranges): Skip DECL_IGNORED_P functions. diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 7242b21..771b019 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -4858,7 +4858,8 @@ struct rtl_opt_pass pass_expand = 0, /* static_pass_number */ TV_EXPAND, /* tv_id */ PROP_ssa | PROP_gimple_leh | PROP_cfg - | PROP_gimple_lcx, /* properties_required */ + | PROP_gimple_lcx + | PROP_gimple_lvec, /* properties_required */ PROP_rtl, /* properties_provided */ PROP_ssa | PROP_trees, /* properties_destroyed */ TODO_verify_ssa | TODO_verify_flow diff --git a/gcc/passes.c b/gcc/passes.c index 5f93306..a47e092 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1310,7 +1310,6 @@ init_optimization_passes (void) NEXT_PASS (pass_expand_omp); NEXT_PASS (pass_build_ssa); - NEXT_PASS (pass_lower_vector); NEXT_PASS (pass_early_warn_uninitialized); NEXT_PASS (pass_rebuild_cgraph_edges); NEXT_PASS (pass_inline_parameters); @@ -1554,6 +1553,7 @@ init_optimization_passes (void) NEXT_PASS (pass_tm_memopt); NEXT_PASS (pass_tm_edges); } + NEXT_PASS (pass_lower_vector); NEXT_PASS (pass_lower_complex_O0); NEXT_PASS (pass_asan_O0); NEXT_PASS (pass_tsan_O0); @@ -2771,6 +2771,8 @@ dump_properties (FILE *dump, unsigned int props) fprintf (dump, "PROP_gimple_lomp\n"); if (props & PROP_gimple_lcx) fprintf (dump, "PROP_gimple_lcx\n"); + if (props & PROP_gimple_lvec) + fprintf (dump, "PROP_gimple_lvec\n"); if (props & PROP_cfglayout) fprintf (dump, "PROP_cfglayout\n"); } diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 0c83921..0942ad7 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -148,6 +148,7 @@ struct simple_ipa_opt_pass #define PROP_cfglayout (1 << 9) /* cfglayout mode on RTL */ #define PROP_gimple_lcx (1 << 10) /* lowered complex */ #define PROP_loops (1 << 11) /* preserve loop structures */ +#define PROP_gimple_lvec (1 << 12) /* lowered vector */ #define PROP_trees \ (PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp) diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index b53ccd1..dbad6d9 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -1472,7 +1472,7 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi) static bool gate_expand_vector_operations_ssa (void) { - return optimize == 0; + return !(cfun->curr_properties & PROP_gimple_lvec); } static unsigned int @@ -1513,7 +1513,7 @@ struct gimple_opt_pass pass_lower_vector = 0, /* static_pass_number */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ - 0, /* properties_provided */ + PROP_gimple_lvec, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ TODO_update_ssa /* todo_flags_finish */ @@ -1536,7 +1536,7 @@ struct gimple_opt_pass pass_lower_vector_ssa = 0, /* static_pass_number */ TV_NONE, /* tv_id */ PROP_cfg, /* properties_required */ - 0, /* properties_provided */ + PROP_gimple_lvec, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ TODO_update_ssa /* todo_flags_finish */ |