#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "tree.h"#include "flags.h"#include "rtl.h"#include "tm_p.h"#include "ggc.h"#include "basic-block.h"#include "cfgloop.h"#include "output.h"#include "expr.h"#include "function.h"#include "diagnostic.h"#include "timevar.h"#include "tree-dump.h"#include "tree-flow.h"#include "domwalk.h"#include "real.h"#include "tree-pass.h"#include "tree-ssa-propagate.h"#include "langhooks.h"#include "params.h"

Go to the source code of this file.
Functions/Subroutines | |
| bool | potentially_threadable_block (basic_block bb) |
| static tree | lhs_of_dominating_assert (tree op, basic_block bb, tree stmt) |
| static void | remove_temporary_equivalences (VEC(tree, heap)**stack) |
| static void | record_temporary_equivalence (tree x, tree y, VEC(tree, heap)**stack) |
| static bool | record_temporary_equivalences_from_phis (edge e, VEC(tree, heap)**stack) |
| static tree | record_temporary_equivalences_from_stmts_at_dest (edge e, VEC(tree, heap)**stack, tree(*simplify)(tree, tree)) |
| static tree | simplify_control_stmt_condition (edge e, tree stmt, tree dummy_cond, tree(*simplify)(tree, tree), bool handle_dominating_asserts) |
| void | thread_across_edge (tree dummy_cond, edge e, bool handle_dominating_asserts, VEC(tree, heap)**stack, tree(*simplify)(tree, tree)) |
Variables | |
| static int | stmt_count |
| static tree lhs_of_dominating_assert | ( | tree | op, | |
| basic_block | bb, | |||
| tree | stmt | |||
| ) | [static] |
Definition at line 84 of file tree-ssa-threadedge.c.
References bb_for_stmt(), CDI_DOMINATORS, dominated_by_p(), FOR_EACH_IMM_USE_FAST, TREE_CODE, TREE_OPERAND, use_operand_p, and USE_STMT.
Referenced by simplify_control_stmt_condition().
| bool potentially_threadable_block | ( | basic_block | bb | ) |
Definition at line 57 of file tree-ssa-threadedge.c.
References bsi_end_p(), bsi_last(), bsi_stmt(), single_pred_p(), single_succ_p(), and TREE_CODE.
Referenced by dom_opt_finalize_block(), and identify_jump_threads().
Definition at line 140 of file tree-ssa-threadedge.c.
References SSA_NAME, SSA_NAME_VALUE, tmp, TREE_CODE, VEC_quick_push, and VEC_reserve.
Referenced by record_temporary_equivalences_from_phis(), and record_temporary_equivalences_from_stmts_at_dest().
Definition at line 163 of file tree-ssa-threadedge.c.
References bb_for_stmt(), edge::dest, dst, is_gimple_reg(), PHI_ARG_DEF_FROM_EDGE, PHI_CHAIN, phi_nodes(), PHI_RESULT, record_temporary_equivalence(), src, SSA_NAME, SSA_NAME_DEF_STMT, stmt_count, and TREE_CODE.
Referenced by thread_across_edge().
| static tree record_temporary_equivalences_from_stmts_at_dest | ( | edge | e, | |
| VEC(tree, heap)** | stack, | |||
| tree(*)(tree, tree) | simplify | |||
| ) | [static] |
Definition at line 212 of file tree-ssa-threadedge.c.
References ASM_VOLATILE_P, boolean_false_node, boolean_true_node, bsi_end_p(), bsi_next(), bsi_start(), bsi_stmt(), cond, COND_EXPR_COND, COND_EXPR_ELSE, COND_EXPR_THEN, copy, edge::dest, fold(), FOR_EACH_SSA_USE_OPERAND, free(), i, IS_EMPTY_STMT, is_gimple_min_invariant(), iter, NULL, NUM_SSA_OPERANDS, PARAM_VALUE, record_temporary_equivalence(), SET_USE, SSA_NAME, SSA_NAME_VALUE, SSA_OP_USE, SSA_OP_VUSE, stmt_count, tmp, TREE_CODE, TREE_OPERAND, USE_FROM_PTR, use_operand_p, and XCNEWVEC.
Referenced by thread_across_edge().
Definition at line 117 of file tree-ssa-threadedge.c.
References dest, NULL, SSA_NAME_VALUE, VEC_length, and VEC_pop.
Referenced by thread_across_edge().
| static tree simplify_control_stmt_condition | ( | edge | e, | |
| tree | stmt, | |||
| tree | dummy_cond, | |||
| tree(*)(tree, tree) | simplify, | |||
| bool | handle_dominating_asserts | |||
| ) | [static] |
Definition at line 354 of file tree-ssa-threadedge.c.
References COMPARISON_CLASS_P, cond, COND_EXPR_COND, fold(), fold_defer_overflow_warnings(), fold_undefer_overflow_warnings(), GOTO_DESTINATION, is_gimple_min_invariant(), lhs_of_dominating_assert(), NULL, simplify(), edge::src, SSA_NAME, SSA_NAME_VALUE, swap_tree_comparison(), SWITCH_COND, tmp, TREE_CODE, TREE_OPERAND, TREE_SET_CODE, tree_swap_operands_p(), and WARN_STRICT_OVERFLOW_CONDITIONAL.
Referenced by thread_across_edge().
| void thread_across_edge | ( | tree | dummy_cond, | |
| edge | e, | |||
| bool | handle_dominating_asserts, | |||
| VEC(tree, heap)** | stack, | |||
| tree(*)(tree, tree) | simplify | |||
| ) |
Definition at line 494 of file tree-ssa-threadedge.c.
References bb_for_stmt(), bsi_last(), bsi_stmt(), cond, edge::dest, dest, EDGE_DFS_BACK, fail, find_taken_edge(), edge::flags, FOR_EACH_SSA_USE_OPERAND, is_gimple_min_invariant(), iter, last, NULL, record_temporary_equivalences_from_phis(), record_temporary_equivalences_from_stmts_at_dest(), register_jump_thread(), remove_temporary_equivalences(), simplify(), simplify_control_stmt_condition(), SSA_NAME, SSA_NAME_DEF_STMT, SSA_OP_USE, SSA_OP_VUSE, stmt_count, TREE_CODE, USE_FROM_PTR, and use_operand_p.
int stmt_count [static] |
Definition at line 51 of file tree-ssa-threadedge.c.
Referenced by Collect_stids_in_unstructured_cflow(), Compute_disconnected_graph(), Fiss_Gather_Inner_Loop(), Fission_Inner_Loop(), HoistIf(), UPDATE< TRANSFORM, CACHE, VERSION >::Process_BB(), SUMMARIZE< program >::Process_procedure(), Propagate_global_vals(), record_temporary_equivalences_from_phis(), record_temporary_equivalences_from_stmts_at_dest(), thread_across_edge(), and Vintrinsic_Fission().
1.5.6