This sub-patch adjust vector_block_info codes and rename to vsetvl_block_info.
gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (class vsetvl_block_info): New. * config/riscv/riscv-vsetvl.h (struct vector_block_info): Removed. --- gcc/config/riscv/riscv-vsetvl.cc | 55 +++++++++++++++++++++++++++++++- gcc/config/riscv/riscv-vsetvl.h | 14 -------- 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index b5ed1ea774a..d91b0272d9f 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -85,7 +85,6 @@ along with GCC; see the file COPYING3. If not see #include "predict.h" #include "profile-count.h" #include "gcse.h" -#include "riscv-vsetvl.h" using namespace rtl_ssa; using namespace riscv_vector; @@ -1218,6 +1217,60 @@ public: } }; +class vsetvl_block_info +{ +public: + /* The static execute probability of the demand info. */ + profile_probability probability; + + auto_vec<vsetvl_info> infos; + vsetvl_info m_info; + bb_info *m_bb; + + bool full_available; + + vsetvl_block_info () : m_bb (nullptr), full_available (false) + { + infos.safe_grow_cleared (0); + m_info.set_empty (); + } + vsetvl_block_info (const vsetvl_block_info &other) + : probability (other.probability), infos (other.infos.copy ()), + m_info (other.m_info), m_bb (other.m_bb) + {} + + vsetvl_info &get_header_info () + { + gcc_assert (!empty_p ()); + return infos.is_empty () ? m_info : infos[0]; + } + vsetvl_info &get_footer_info () + { + gcc_assert (!empty_p ()); + return infos.is_empty () ? m_info : infos[infos.length () - 1]; + } + const vsetvl_info &get_header_info () const + { + gcc_assert (!empty_p ()); + return infos.is_empty () ? m_info : infos[0]; + } + const vsetvl_info &get_footer_info () const + { + gcc_assert (!empty_p ()); + return infos.is_empty () ? m_info : infos[infos.length () - 1]; + } + + bool empty_p () const { return infos.is_empty () && !has_info (); } + bool has_info () const { return !m_info.empty_p (); } + void set_info (const vsetvl_info &info) + { + gcc_assert (infos.is_empty ()); + m_info = info; + m_info.set_bb (m_bb); + } + void set_empty_info () { m_info.set_empty (); } +}; + class demand_system { private: diff --git a/gcc/config/riscv/riscv-vsetvl.h b/gcc/config/riscv/riscv-vsetvl.h index 96e36403af7..16c84e0684b 100644 --- a/gcc/config/riscv/riscv-vsetvl.h +++ b/gcc/config/riscv/riscv-vsetvl.h @@ -55,19 +55,5 @@ enum def_type CLOBBER_DEF = 1 << 4 }; -struct vector_block_info -{ - /* The local_dem vector insn_info of the block. */ - vector_insn_info local_dem; - - /* The reaching_out vector insn_info of the block. */ - vector_insn_info reaching_out; - - /* The static execute probability of the demand info. */ - profile_probability probability; - - vector_block_info () = default; -}; - } // namespace riscv_vector #endif -- 2.36.3