|
GCC Middle and Back End API Reference
|
#include "config.h"#include "system.h"#include "coretypes.h"#include "backend.h"#include "target.h"#include "rtl.h"#include "df.h"#include "memmodel.h"#include "tm_p.h"#include "insn-config.h"#include "emit-rtl.h"#include "recog.h"#include "profile.h"#include "insn-attr.h"#include "except.h"#include "cfganal.h"#include "sched-int.h"#include "sel-sched.h"#include "tree-pass.h"#include "dbgcnt.h"#include "pretty-print.h"#include "print-rtl.h"
Functions | |
| static unsigned int | rest_of_handle_live_range_shrinkage (void) |
| static unsigned int | rest_of_handle_sched (void) |
| static unsigned int | rest_of_handle_sched2 (void) |
| static unsigned int | rest_of_handle_sched_fusion (void) |
| rtl_opt_pass * | make_pass_live_range_shrinkage (gcc::context *ctxt) |
| rtl_opt_pass * | make_pass_sched (gcc::context *ctxt) |
| rtl_opt_pass * | make_pass_sched2 (gcc::context *ctxt) |
| rtl_opt_pass * | make_pass_sched_fusion (gcc::context *ctxt) |
| rtl_opt_pass * make_pass_live_range_shrinkage | ( | gcc::context * | ctxt | ) |
References make_pass_live_range_shrinkage().
Referenced by make_pass_fast_rtl_byte_dce(), and make_pass_live_range_shrinkage().
| rtl_opt_pass * make_pass_sched | ( | gcc::context * | ctxt | ) |
References make_pass_sched().
Referenced by make_pass_fast_rtl_byte_dce(), and make_pass_sched().
| rtl_opt_pass * make_pass_sched2 | ( | gcc::context * | ctxt | ) |
References make_pass_sched2().
Referenced by make_pass_sched2(), and make_pass_value_profile_transformations().
| rtl_opt_pass * make_pass_sched_fusion | ( | gcc::context * | ctxt | ) |
References make_pass_sched_fusion().
Referenced by make_pass_sched_fusion(), and make_pass_value_profile_transformations().
|
static |
Instruction scheduling pass. Copyright (C) 1992-2026 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
This pass implements list scheduling within basic blocks. It is run twice: (1) after flow analysis, but before register allocation, and (2) after register allocation. The first run performs interblock scheduling, moving insns between different blocks in the same "region", and the second runs only basic block scheduling. Interblock motions performed are useful motions and speculative motions, including speculative loads. Motions requiring code duplication are not supported. The identification of motion type and the check for validity of speculative motions requires construction and analysis of the function's control flow graph. The main entry point for this pass is schedule_insns(), called for each function. The work of the scheduler is organized in three levels: (1) function level: insns are subject to splitting, control-flow-graph is constructed, regions are computed (after reload, each region is of one block), (2) region level: control flow graph attributes required for interblock scheduling are computed (dominators, reachability, etc.), data dependences and priorities are computed, and (3) block level: insns in the block are actually scheduled.
Disable warnings about quoting issues in the pp_xxx calls below that (intentionally) don't follow GCC diagnostic conventions.
Run instruction scheduler.
References rest_of_handle_live_range_shrinkage(), and schedule_insns().
Referenced by rest_of_handle_live_range_shrinkage().
|
static |
Run instruction scheduler.
References maybe_skip_selective_scheduling(), rest_of_handle_sched(), run_selective_scheduling(), and schedule_insns().
Referenced by rest_of_handle_sched().
|
static |
Run second scheduling pass after reload.
References maybe_skip_selective_scheduling(), rest_of_handle_sched2(), run_selective_scheduling(), schedule_ebbs(), and schedule_insns().
Referenced by rest_of_handle_sched2().
|
static |
References rest_of_handle_sched_fusion(), and schedule_insns().
Referenced by rest_of_handle_sched_fusion().