(root)/
gcc-13.2.0/
gcc/
target-globals.h
       1  /* Target-dependent globals.
       2     Copyright (C) 2010-2023 Free Software Foundation, Inc.
       3  
       4  This file is part of GCC.
       5  
       6  GCC is free software; you can redistribute it and/or modify it under
       7  the terms of the GNU General Public License as published by the Free
       8  Software Foundation; either version 3, or (at your option) any later
       9  version.
      10  
      11  GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      12  WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14  for more details.
      15  
      16  You should have received a copy of the GNU General Public License
      17  along with GCC; see the file COPYING3.  If not see
      18  <http://www.gnu.org/licenses/>.  */
      19  
      20  #ifndef TARGET_GLOBALS_H
      21  #define TARGET_GLOBALS_H 1
      22  
      23  #if SWITCHABLE_TARGET
      24  extern class target_flag_state *this_target_flag_state;
      25  extern struct target_regs *this_target_regs;
      26  extern struct target_rtl *this_target_rtl;
      27  extern struct target_recog *this_target_recog;
      28  extern struct target_hard_regs *this_target_hard_regs;
      29  extern struct target_function_abi_info *this_target_function_abi_info;
      30  extern struct target_reload *this_target_reload;
      31  extern struct target_expmed *this_target_expmed;
      32  extern struct target_optabs *this_target_optabs;
      33  extern struct target_libfuncs *this_target_libfuncs;
      34  extern struct target_cfgloop *this_target_cfgloop;
      35  extern struct target_ira *this_target_ira;
      36  extern class target_ira_int *this_target_ira_int;
      37  extern struct target_builtins *this_target_builtins;
      38  extern struct target_gcse *this_target_gcse;
      39  extern struct target_bb_reorder *this_target_bb_reorder;
      40  extern struct target_lower_subreg *this_target_lower_subreg;
      41  #endif
      42  
      43  class GTY(()) target_globals {
      44  public:
      45    ~target_globals ();
      46  
      47    class target_flag_state *GTY((skip)) flag_state;
      48    struct target_regs *GTY((skip)) regs;
      49    struct target_rtl *rtl;
      50    struct target_recog *GTY((skip)) recog;
      51    struct target_hard_regs *GTY((skip)) hard_regs;
      52    struct target_function_abi_info *GTY((skip)) function_abi_info;
      53    struct target_reload *GTY((skip)) reload;
      54    struct target_expmed *GTY((skip)) expmed;
      55    struct target_optabs *GTY((skip)) optabs;
      56    struct target_libfuncs *libfuncs;
      57    struct target_cfgloop *GTY((skip)) cfgloop;
      58    struct target_ira *GTY((skip)) ira;
      59    class target_ira_int *GTY((skip)) ira_int;
      60    struct target_builtins *GTY((skip)) builtins;
      61    struct target_gcse *GTY((skip)) gcse;
      62    struct target_bb_reorder *GTY((skip)) bb_reorder;
      63    struct target_lower_subreg *GTY((skip)) lower_subreg;
      64  };
      65  
      66  #if SWITCHABLE_TARGET
      67  extern class target_globals default_target_globals;
      68  
      69  extern class target_globals *save_target_globals (void);
      70  extern class target_globals *save_target_globals_default_opts (void);
      71  
      72  inline void
      73  restore_target_globals (class target_globals *g)
      74  {
      75    this_target_flag_state = g->flag_state;
      76    this_target_regs = g->regs;
      77    this_target_rtl = g->rtl;
      78    this_target_recog = g->recog;
      79    this_target_hard_regs = g->hard_regs;
      80    this_target_function_abi_info = g->function_abi_info;
      81    this_target_reload = g->reload;
      82    this_target_expmed = g->expmed;
      83    this_target_optabs = g->optabs;
      84    this_target_libfuncs = g->libfuncs;
      85    this_target_cfgloop = g->cfgloop;
      86    this_target_ira = g->ira;
      87    this_target_ira_int = g->ira_int;
      88    this_target_builtins = g->builtins;
      89    this_target_gcse = g->gcse;
      90    this_target_bb_reorder = g->bb_reorder;
      91    this_target_lower_subreg = g->lower_subreg;
      92  }
      93  #endif
      94  
      95  #endif