tree-cfg.c (hashtab.h): Include.
authorJeff Law <law@redhat.com>
Sat, 13 Nov 2004 04:18:54 +0000 (21:18 -0700)
committerJeff Law <law@gcc.gnu.org>
Sat, 13 Nov 2004 04:18:54 +0000 (21:18 -0700)
commit92b6dff30288af56b6373689489a69d7e02f4193
treef0bf0eacf8ffa54f821595a192ad4a94667a8d45
parent2256aa1cff25a0ea9c5b699795a773a93f11f565
tree-cfg.c (hashtab.h): Include.

* tree-cfg.c (hashtab.h): Include.
(struct edge_to_case_leader_elt): New structure.
(edge_to_case_leader): New.
(edge_to_case_leader_hash): New hashtable hasing function.
(edge_to_case_leader_eq): New hashtable equality function.
(record_switch_edge): New function.
(get_case_leader_for_edge, get_case_leader_for_edge): New functions.
(make_switch_expr_edges): Build the edge-to-case-leader
hash table.  Tear down the hash table when we're done.
(cleanup_dead_labels): Use CASE_LEADER_OR_LABEL instead of
CASE_LABEL.
(tree_node_can_be_shared): Allow sharing of CASE_LABEL_EXPR nodes.
(tree_redirect_edge_and_branch, case SWITCH_EXPR): Update
to use new concept of case leaders to reduce overhead of
redirecting outgoing edges from switch statements.
* tree.c (get_case_label): New function.
* tree.h (CASE_LABEL): Define in terms of get_case_label.
(CASE_LEADER_OR_LABEL): Define.

From-SVN: r90570
gcc/ChangeLog
gcc/tree-cfg.c
gcc/tree.c
gcc/tree.h