diff options
author | Martin Liska <mliska@suse.cz> | 2021-01-12 13:40:44 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2021-01-13 11:33:28 +0100 |
commit | 7875e8dc831f30eec7203e090a209efe4c01a27d (patch) | |
tree | 48b1f10b1e11157c58ca1bad0181aa2f339acec9 /gcc/gimple-if-to-switch.cc | |
parent | 0db5f48848632cc571022b2c700ddcf69264f433 (diff) | |
download | gcc-7875e8dc831f30eec7203e090a209efe4c01a27d.zip gcc-7875e8dc831f30eec7203e090a209efe4c01a27d.tar.gz gcc-7875e8dc831f30eec7203e090a209efe4c01a27d.tar.bz2 |
if-to-switch: fix also virtual phis
gcc/ChangeLog:
PR tree-optimization/98455
* gimple-if-to-switch.cc (condition_info::record_phi_mapping):
Record also virtual PHIs.
(pass_if_to_switch::execute): Return TODO_cleanup_cfg only
conditionally.
gcc/testsuite/ChangeLog:
PR tree-optimization/98455
* gcc.dg/tree-ssa/pr98455.c: New test.
Diffstat (limited to 'gcc/gimple-if-to-switch.cc')
-rw-r--r-- | gcc/gimple-if-to-switch.cc | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/gcc/gimple-if-to-switch.cc b/gcc/gimple-if-to-switch.cc index 560753d..1712fc4 100644 --- a/gcc/gimple-if-to-switch.cc +++ b/gcc/gimple-if-to-switch.cc @@ -91,11 +91,8 @@ condition_info::record_phi_mapping (edge e, mapping_vec *vec) gsi_next (&gsi)) { gphi *phi = gsi.phi (); - if (!virtual_operand_p (gimple_phi_result (phi))) - { - tree arg = PHI_ARG_DEF_FROM_EDGE (phi, e); - vec->safe_push (std::make_pair (phi, arg)); - } + tree arg = PHI_ARG_DEF_FROM_EDGE (phi, e); + vec->safe_push (std::make_pair (phi, arg)); } } @@ -470,7 +467,7 @@ const pass_data pass_data_if_to_switch = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_cleanup_cfg | TODO_update_ssa /* todo_flags_finish */ + TODO_update_ssa /* todo_flags_finish */ }; class pass_if_to_switch : public gimple_opt_pass @@ -575,7 +572,7 @@ pass_if_to_switch::execute (function *fun) if (!all_candidates.is_empty ()) { free_dominance_info (CDI_DOMINATORS); - mark_virtual_operands_for_renaming (fun); + return TODO_cleanup_cfg; } return 0; |