Lines Matching refs:tf

303   struct leh_tf_state *tf;
374 find_goto_replacement (struct leh_tf_state *tf, tree stmt)
379 bsearch (&tmp, tf->goto_queue, tf->goto_queue_active,
390 replace_goto_queue_cond_clause (tree *tp, struct leh_tf_state *tf,
395 new = find_goto_replacement (tf, *tp);
419 replace_goto_queue_1 (tree t, struct leh_tf_state *tf, tree_stmt_iterator *tsi)
425 t = find_goto_replacement (tf, t);
435 replace_goto_queue_cond_clause (&COND_EXPR_THEN (t), tf, tsi);
436 replace_goto_queue_cond_clause (&COND_EXPR_ELSE (t), tf, tsi);
441 replace_goto_queue_stmt_list (TREE_OPERAND (t, 0), tf);
442 replace_goto_queue_stmt_list (TREE_OPERAND (t, 1), tf);
445 replace_goto_queue_stmt_list (CATCH_BODY (t), tf);
448 replace_goto_queue_stmt_list (EH_FILTER_FAILURE (t), tf);
465 replace_goto_queue_stmt_list (tree t, struct leh_tf_state *tf)
469 replace_goto_queue_1 (tsi_stmt (i), tf, &i);
475 replace_goto_queue (struct leh_tf_state *tf)
477 if (tf->goto_queue_active == 0)
479 replace_goto_queue_stmt_list (*tf->top_p, tf);
489 struct leh_tf_state *tf = state->tf;
494 if (!tf)
510 if (! outside_finally_tree (lab, tf->try_finally_expr))
513 if (! tf->dest_array)
515 tf->dest_array = VEC_alloc (tree, heap, 10);
516 VEC_quick_push (tree, tf->dest_array, lab);
521 int n = VEC_length (tree, tf->dest_array);
523 if (VEC_index (tree, tf->dest_array, index) == lab)
526 VEC_safe_push (tree, heap, tf->dest_array, lab);
532 tf->may_return = true;
540 active = tf->goto_queue_active;
541 size = tf->goto_queue_size;
545 tf->goto_queue_size = size;
546 tf->goto_queue
547 = XRESIZEVEC (struct goto_queue_node, tf->goto_queue, size);
550 q = &tf->goto_queue[active];
551 tf->goto_queue_active = active + 1;
566 struct leh_tf_state *tf = state->tf;
570 if (!tf)
579 gcc_assert (!outside_finally_tree (lab, tf->try_finally_expr));
746 if (outer_state->tf)
747 region = outer_state->tf->try_finally_expr;
758 lower_try_finally_fallthru_label (struct leh_tf_state *tf)
760 tree label = tf->fallthru_label;
764 tf->fallthru_label = label;
765 if (tf->outer->tf)
766 record_in_finally_tree (label, tf->outer->tf->try_finally_expr);
794 struct leh_tf_state *tf)
806 finally = TREE_OPERAND (*tf->top_p, 1);
866 x = build_resx (get_eh_region_number (tf->region));
886 i = tsi_last (TREE_OPERAND (*tf->top_p, 0));
888 if (tf->may_fallthru)
890 x = lower_try_finally_fallthru_label (tf);
897 tf->may_fallthru = false;
900 x = build1 (LABEL_EXPR, void_type_node, tf->eh_label);
906 tf->may_throw = false;
915 lower_try_finally_nofallthru (struct leh_state *state, struct leh_tf_state *tf)
920 if (tf->may_throw)
921 lab = tf->eh_label;
925 finally = TREE_OPERAND (*tf->top_p, 1);
926 *tf->top_p = TREE_OPERAND (*tf->top_p, 0);
929 append_to_statement_list (x, tf->top_p);
932 q = tf->goto_queue;
933 qe = q + tf->goto_queue_active;
940 replace_goto_queue (tf);
943 append_to_statement_list (finally, tf->top_p);
951 lower_try_finally_onedest (struct leh_state *state, struct leh_tf_state *tf)
956 finally = TREE_OPERAND (*tf->top_p, 1);
957 *tf->top_p = TREE_OPERAND (*tf->top_p, 0);
961 if (tf->may_throw)
966 x = build1 (LABEL_EXPR, void_type_node, tf->eh_label);
967 append_to_statement_list (x, tf->top_p);
969 append_to_statement_list (finally, tf->top_p);
971 x = build_resx (get_eh_region_number (tf->region));
973 append_to_statement_list (x, tf->top_p);
978 if (tf->may_fallthru)
982 append_to_statement_list (finally, tf->top_p);
988 append_to_statement_list (x, tf->top_p);
990 append_to_statement_list (finally, tf->top_p);
992 q = tf->goto_queue;
993 qe = q + tf->goto_queue_active;
995 if (tf->may_return)
1001 replace_goto_queue (tf);
1008 replace_goto_queue (tf);
1010 if (VEC_index (tree, tf->dest_array, 0) == tf->fallthru_label)
1015 tf->fallthru_label = NULL;
1020 append_to_statement_list (tf->goto_queue[0].cont_stmt, tf->top_p);
1021 maybe_record_in_goto_queue (state, tf->goto_queue[0].cont_stmt);
1029 lower_try_finally_copy (struct leh_state *state, struct leh_tf_state *tf)
1034 finally = TREE_OPERAND (*tf->top_p, 1);
1035 *tf->top_p = TREE_OPERAND (*tf->top_p, 0);
1039 if (tf->may_fallthru)
1045 x = lower_try_finally_fallthru_label (tf);
1050 if (tf->may_throw)
1052 x = build1 (LABEL_EXPR, void_type_node, tf->eh_label);
1059 x = build_resx (get_eh_region_number (tf->region));
1063 if (tf->goto_queue)
1074 return_index = VEC_length (tree, tf->dest_array);
1077 q = tf->goto_queue;
1078 qe = q + tf->goto_queue_active;
1113 for (q = tf->goto_queue; q < qe; q++)
1130 replace_goto_queue (tf);
1136 append_to_statement_list (new_stmt, tf->top_p);
1145 lower_try_finally_switch (struct leh_state *state, struct leh_tf_state *tf)
1156 finally = TREE_OPERAND (*tf->top_p, 1);
1157 *tf->top_p = TREE_OPERAND (*tf->top_p, 0);
1163 nlabels = VEC_length (tree, tf->dest_array);
1165 eh_index = return_index + tf->may_return;
1166 fallthru_index = eh_index + tf->may_throw;
1167 ndests = fallthru_index + tf->may_fallthru;
1183 if (tf->may_fallthru)
1187 append_to_statement_list (x, tf->top_p);
1189 if (tf->may_throw)
1192 append_to_statement_list (x, tf->top_p);
1205 x = lower_try_finally_fallthru_label (tf);
1210 if (tf->may_throw)
1212 x = build1 (LABEL_EXPR, void_type_node, tf->eh_label);
1213 append_to_statement_list (x, tf->top_p);
1217 append_to_statement_list (x, tf->top_p);
1227 x = build_resx (get_eh_region_number (tf->region));
1232 append_to_statement_list (x, tf->top_p);
1234 append_to_statement_list (finally, tf->top_p);
1237 q = tf->goto_queue;
1238 qe = q + tf->goto_queue_active;
1239 j = last_case_index + tf->may_return;
1292 replace_goto_queue (tf);
1301 append_to_statement_list (switch_stmt, tf->top_p);
1302 append_to_statement_list (switch_body, tf->top_p);
1371 this_state.tf = &this_tf;
1449 this_state.tf = state->tf;