1 /* Target-dependent globals.
2 Copyright (C) 2010-2022 Free Software Foundation, Inc.
4 This file is part of GCC.
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
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
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/>. */
20 #ifndef TARGET_GLOBALS_H
21 #define TARGET_GLOBALS_H 1
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
;
43 class GTY(()) target_globals
{
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
;
67 extern class target_globals default_target_globals
;
69 extern class target_globals
*save_target_globals (void);
70 extern class target_globals
*save_target_globals_default_opts (void);
73 restore_target_globals (class target_globals
*g
)
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
;