1 /* Target-dependent globals.
2 Copyright (C) 2010-2014 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 struct 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_hard_regs
*this_target_hard_regs
;
28 extern struct target_reload
*this_target_reload
;
29 extern struct target_expmed
*this_target_expmed
;
30 extern struct target_optabs
*this_target_optabs
;
31 extern struct target_libfuncs
*this_target_libfuncs
;
32 extern struct target_cfgloop
*this_target_cfgloop
;
33 extern struct target_ira
*this_target_ira
;
34 extern struct target_ira_int
*this_target_ira_int
;
35 extern struct target_lra_int
*this_target_lra_int
;
36 extern struct target_builtins
*this_target_builtins
;
37 extern struct target_gcse
*this_target_gcse
;
38 extern struct target_bb_reorder
*this_target_bb_reorder
;
39 extern struct target_lower_subreg
*this_target_lower_subreg
;
42 struct GTY(()) target_globals
{
43 struct target_flag_state
*GTY((skip
)) flag_state
;
44 void *GTY((atomic
)) regs
;
45 struct target_rtl
*rtl
;
46 void *GTY((atomic
)) hard_regs
;
47 void *GTY((atomic
)) reload
;
48 void *GTY((atomic
)) expmed
;
49 struct target_optabs
*GTY((skip
)) optabs
;
50 struct target_libfuncs
*libfuncs
;
51 struct target_cfgloop
*GTY((skip
)) cfgloop
;
52 void *GTY((atomic
)) ira
;
53 void *GTY((atomic
)) ira_int
;
54 void *GTY((atomic
)) lra_int
;
55 struct target_builtins
*GTY((skip
)) builtins
;
56 struct target_gcse
*GTY((skip
)) gcse
;
57 struct target_bb_reorder
*GTY((skip
)) bb_reorder
;
58 struct target_lower_subreg
*GTY((skip
)) lower_subreg
;
62 extern struct target_globals default_target_globals
;
64 extern struct target_globals
*save_target_globals (void);
65 extern struct target_globals
*save_target_globals_default_opts (void);
68 restore_target_globals (struct target_globals
*g
)
70 this_target_flag_state
= g
->flag_state
;
71 this_target_regs
= (struct target_regs
*) g
->regs
;
72 this_target_rtl
= g
->rtl
;
73 this_target_hard_regs
= (struct target_hard_regs
*) g
->hard_regs
;
74 this_target_reload
= (struct target_reload
*) g
->reload
;
75 this_target_expmed
= (struct target_expmed
*) g
->expmed
;
76 this_target_optabs
= g
->optabs
;
77 this_target_libfuncs
= g
->libfuncs
;
78 this_target_cfgloop
= g
->cfgloop
;
79 this_target_ira
= (struct target_ira
*) g
->ira
;
80 this_target_ira_int
= (struct target_ira_int
*) g
->ira_int
;
81 this_target_lra_int
= (struct target_lra_int
*) g
->lra_int
;
82 this_target_builtins
= g
->builtins
;
83 this_target_gcse
= g
->gcse
;
84 this_target_bb_reorder
= g
->bb_reorder
;
85 this_target_lower_subreg
= g
->lower_subreg
;