aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2012-09-11 22:39:34 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2012-09-11 22:39:34 +0000
commita067ceea41a241c834ead8d234f6b2e7b48f67d5 (patch)
treeb469cd6db72a4e79549037180afa5a93d3451b03 /gcc/except.c
parent712461f4dfaff54cc9d119662e8b001a4ed84311 (diff)
* tree.h (expand_case): Move prototype ...
* expr.h (expand_case): ...here. (expand_sjlj_dispatch_table): New prototype. * stmt.c: Include pointer-set.h instead of bitmap.h. (expand_case): Use a pointer set instead of a bitmap for already-seen labels. Fold label values here. (add_case_node): Don't fold label values here. (expand_sjlj_dispatch_table): New function. * except.c (sjlj_emit_dispatch_table): Use it. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@191203 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/gcc/except.c b/gcc/except.c
index 9ba7aa8f6c9..801718de195 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1361,17 +1361,9 @@ sjlj_emit_dispatch_table (rtx dispatch_label, int num_dispatch)
if (num_dispatch > 1)
{
- gimple switch_stmt;
- tree default_label = create_artificial_label (UNKNOWN_LOCATION);
rtx disp = adjust_address (fc, TYPE_MODE (integer_type_node),
sjlj_fc_call_site_ofs);
- switch_stmt = gimple_build_switch (make_tree (integer_type_node, disp),
- build_case_label (NULL, NULL,
- default_label),
- dispatch_labels);
- expand_case (switch_stmt);
- emit_label (label_rtx (default_label));
- expand_builtin_trap ();
+ expand_sjlj_dispatch_table (disp, dispatch_labels);
}
seq = get_insns ();