aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.h
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2017-09-05 10:12:27 +0200
committerMartin Liska <marxin@gcc.gnu.org>2017-09-05 08:12:27 +0000
commit02e637d86f9ecb6d0e368438291bb6f6f8feb3ab (patch)
tree93af2d7dae66c7bb229217f75ae4b0d99853f7c7 /gcc/tree-cfg.h
parentb471c5c6cf2bfe51699b7fcbcffc34024ff7bfce (diff)
downloadgcc-02e637d86f9ecb6d0e368438291bb6f6f8feb3ab.zip
gcc-02e637d86f9ecb6d0e368438291bb6f6f8feb3ab.tar.gz
gcc-02e637d86f9ecb6d0e368438291bb6f6f8feb3ab.tar.bz2
Learn CFG cleanup to transform single case switches to gcond.
2017-09-05 Martin Liska <mliska@suse.cz> PR tree-optimization/82032 * tree-cfg.c (generate_range_test): New function. * tree-cfg.h (generate_range_test): Declared here. * tree-cfgcleanup.c (convert_single_case_switch): New function. (cleanup_control_expr_graph): Use it. * tree-switch-conversion.c (try_switch_expansion): Remove assert. (emit_case_nodes): Use generate_range_test. 2017-09-05 Martin Liska <mliska@suse.cz> PR tree-optimization/82032 * g++.dg/other/pr82032.C: New test. * gcc.dg/tree-ssa/pr68198.c: Update scanned pattern. * gcc.dg/tree-ssa/vrp34.c: Likewise. * gcc.dg/switch-10.c: Likewise. From-SVN: r251690
Diffstat (limited to 'gcc/tree-cfg.h')
-rw-r--r--gcc/tree-cfg.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/tree-cfg.h b/gcc/tree-cfg.h
index 66be436..7a08cb0 100644
--- a/gcc/tree-cfg.h
+++ b/gcc/tree-cfg.h
@@ -109,6 +109,8 @@ extern basic_block insert_cond_bb (basic_block, gimple *, gimple *,
extern bool gimple_find_sub_bbs (gimple_seq, gimple_stmt_iterator *);
extern bool extract_true_false_controlled_edges (basic_block, basic_block,
edge *, edge *);
+extern void generate_range_test (basic_block bb, tree index, tree low,
+ tree high, tree *lhs, tree *rhs);
/* Return true if the LHS of a call should be removed. */