Skip to content

[CFG] Replace lambdas in control_flow_graph.cpp with named helpers#699

Open
hughperkins wants to merge 19 commits into
mainfrom
hp/remove-cfg-lambdas
Open

[CFG] Replace lambdas in control_flow_graph.cpp with named helpers#699
hughperkins wants to merge 19 commits into
mainfrom
hp/remove-cfg-lambdas

Merge branch 'main' into hp/remove-cfg-lambdas

37dc765
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / PR change report succeeded Jun 29, 2026 in 0s

PR change report

Per-file totals + per-function breakdown of code-line additions and removals.

Details

PR change report (37dc765f0)

Per-file totals + per-function breakdown of code-line additions and removals.
Code lines exclude blank lines, comment-only lines, and Python multi-line strings.

File LoC Added Removed
quadrants/ir/control_flow_graph.cpp 1232 +550 -711
quadrants/ir/determine_ad_stack_size.cpp 0 +488
quadrants/ir/control_flow_graph.h 79 +21 -2
quadrants/ir/statements.h 1331 +5 -1
quadrants/transforms/determine_ad_stack_size.cpp 1081 +4 -4

Total: 5 file(s) changed, +1068 -718 code lines.

Per-function breakdown

quadrants/ir/control_flow_graph.cpp 1232 +550 -711
    New:
      try_eliminate_dead_store_at()                          0      +48
      CFGNode::try_eliminate_identical_store_at()            0      +35
      CFGNode::try_forward_load_at()                         0      +33
      try_eliminate_identical_load_at()                      0      +25
      CFGNode::fold_definition_into_result()                 0      +24
      CFGNode::find_cross_block_def()                        0      +21
      seed_final_node_live_gen()                             0      +20
      may_contain_address()                                  0      +18
      write_cfg_node_statements()                            0      +18
      write_cfg_node_header()                                0      +16
      dse_store_destinations()                               0      +15
      is_dse_eligible_pointer()                              0      +14
      seed_start_node_reach_gen()                            0      +14
      in_final_node_live_gen()                               0      +13
      is_external_input_pointer()                            0      +13
      CFGNode::any_aliased_store_breaks_forwarding()         0      +12
      is_store_dead()                                        0      +12
      is_reach_in_stmt_killed_at()                           0      +11
      build_matrix_ptr_alias_maps()                          0      +10
      mark_loads_live_in_this_node()                         0      +10
      format_neighbor_indices()                              0       +9
      format_live_var_names()                                0       +8
      CFGNode::find_intra_block_last_def()                   0       +7
      ControlFlowGraph::assert_structural_invariants()       0       +7
      format_cfg_node_range_label()                          0       +7
      record_weakened_atomic_as_load()                       0       +7
      CFGNode::is_visible_at()                               0       +6
    Existing:
      CFGNode::dead_store_elimination()                    126      +23     -113
      CFGNode::find_forwardable_store_value()              124      +13      -89
      CFGNode::may_contain_variable()                       20      +12       -4
      CFGNode::contain_variable()                           28      +11       -7
      ControlFlowGraph::dump_graph_to_file()                65      +10      -45
      ControlFlowGraph::reaching_definition_analysis()      71       +9      -38
      ControlFlowGraph::live_variable_analysis()            68       +8      -33
      CFGNode::store_to_load_forwarding()                   68       +7      -58
      CFGNode::is_reach_killed()                             3       +1       -1
      CFGNode::reaching_definition_analysis()               21       +1       -1
      ControlFlowGraph::dead_store_elimination()            12       +1
      ControlFlowGraph::gather_loaded_snodes()              17       +1
      ControlFlowGraph::simplify_graph()                    28       +1
      ControlFlowGraph::store_to_load_forwarding()          11       +1
      ControlFlowGraph::unreachable_code_elimination()      28       +1
    Deleted:
      ControlFlowGraph::determine_ad_stack_size()          322              -322
    # note: per-function +/- differs from file totals by added_drift=+17 removed_drift=+0

quadrants/ir/determine_ad_stack_size.cpp 0 +488
    New:
      tarjan_scc()                                      0      +72
      group_stacks_by_fingerprint()                     0      +44
      accumulate_per_stack_per_node_size_deltas()       0      +39
      ControlFlowGraph::determine_ad_stack_size()       0      +38
      identify_cyclic_sccs_and_topo()                   0      +34
      dp_mixed_sign_cyclic_scc()                        0      +32
      run_ad_stack_size_dp_for_representative()         0      +28
      classify_scc_edges()                              0      +24
      update_global_max_and_relax_inter_scc()           0      +23
      classify_cyclic_scc_fast_path()                   0      +21
      apply_ad_stack_dp_results()                       0      +19
      compute_outgoing_node_ids()                       0      +17
      spread_max_begin_over_zero_scc()                  0      +17
      <module>()                                        0      +16
      collect_adaptive_ad_stacks()                      0      +16
    # note: per-function +/- differs from file totals by added_drift=+48 removed_drift=+0

quadrants/ir/control_flow_graph.h 79 +21 -2
    Existing:
      <module>()       7      +21       -2

quadrants/ir/statements.h 1331 +5 -1
    New:
      AdStackAllocaStmt::is_adaptive()       0       +3
    Existing:
      <module>()                             2       +2       -1

quadrants/transforms/determine_ad_stack_size.cpp 1081 +4 -4
    Existing:
      determine_ad_stack_size()     111       +4       -4

Notes:
  * The number columns (without a + or - sign) are code-line counts in the BASE (pre-PR) version: file size before this PR (0 for newly-added files), function body size before this PR (0 for new functions; original body size for deleted functions).
  * +<n> / -<n> are code lines added / removed by this PR.
  * Code lines exclude blank lines, comment-only lines, and Python multi-line strings.