]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/target-globals.h
re PR c++/62255 (Introducing an unrelated template parameter causes compilation to...
[thirdparty/gcc.git] / gcc / target-globals.h
CommitLineData
3bd36029 1/* Target-dependent globals.
23a5b65a 2 Copyright (C) 2010-2014 Free Software Foundation, Inc.
3bd36029
RS
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
9version.
10
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
15
16You should have received a copy of the GNU General Public License
17along 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
24extern struct target_flag_state *this_target_flag_state;
939dcd0d 25extern struct target_regs *this_target_regs;
5fb0e246 26extern struct target_rtl *this_target_rtl;
4cc8d9d2 27extern struct target_recog *this_target_recog;
6642445b 28extern struct target_hard_regs *this_target_hard_regs;
d474db84 29extern struct target_reload *this_target_reload;
462f85ce 30extern struct target_expmed *this_target_expmed;
4bcbfa03 31extern struct target_optabs *this_target_optabs;
3e9c326a 32extern struct target_libfuncs *this_target_libfuncs;
4391924a 33extern struct target_cfgloop *this_target_cfgloop;
afcc66c4
RS
34extern struct target_ira *this_target_ira;
35extern struct target_ira_int *this_target_ira_int;
fa19795e 36extern struct target_builtins *this_target_builtins;
7c6811fe 37extern struct target_gcse *this_target_gcse;
76ee381a 38extern struct target_bb_reorder *this_target_bb_reorder;
af4ba423 39extern struct target_lower_subreg *this_target_lower_subreg;
e83b8e2e 40#endif
3bd36029
RS
41
42struct GTY(()) target_globals {
43 struct target_flag_state *GTY((skip)) flag_state;
5da96960 44 void *GTY((atomic)) regs;
5fb0e246 45 struct target_rtl *rtl;
4cc8d9d2 46 void *GTY((atomic)) recog;
5da96960
JJ
47 void *GTY((atomic)) hard_regs;
48 void *GTY((atomic)) reload;
49 void *GTY((atomic)) expmed;
4bcbfa03 50 struct target_optabs *GTY((skip)) optabs;
3e9c326a 51 struct target_libfuncs *libfuncs;
4391924a 52 struct target_cfgloop *GTY((skip)) cfgloop;
5da96960
JJ
53 void *GTY((atomic)) ira;
54 void *GTY((atomic)) ira_int;
fa19795e 55 struct target_builtins *GTY((skip)) builtins;
7c6811fe 56 struct target_gcse *GTY((skip)) gcse;
76ee381a 57 struct target_bb_reorder *GTY((skip)) bb_reorder;
af4ba423 58 struct target_lower_subreg *GTY((skip)) lower_subreg;
3bd36029
RS
59};
60
e83b8e2e 61#if SWITCHABLE_TARGET
3bd36029
RS
62extern struct target_globals default_target_globals;
63
64extern struct target_globals *save_target_globals (void);
135204dd 65extern struct target_globals *save_target_globals_default_opts (void);
3bd36029
RS
66
67static inline void
68restore_target_globals (struct target_globals *g)
69{
70 this_target_flag_state = g->flag_state;
5da96960 71 this_target_regs = (struct target_regs *) g->regs;
5fb0e246 72 this_target_rtl = g->rtl;
4cc8d9d2 73 this_target_recog = (struct target_recog *) g->recog;
5da96960
JJ
74 this_target_hard_regs = (struct target_hard_regs *) g->hard_regs;
75 this_target_reload = (struct target_reload *) g->reload;
76 this_target_expmed = (struct target_expmed *) g->expmed;
4bcbfa03 77 this_target_optabs = g->optabs;
3e9c326a 78 this_target_libfuncs = g->libfuncs;
4391924a 79 this_target_cfgloop = g->cfgloop;
5da96960
JJ
80 this_target_ira = (struct target_ira *) g->ira;
81 this_target_ira_int = (struct target_ira_int *) g->ira_int;
fa19795e 82 this_target_builtins = g->builtins;
7c6811fe 83 this_target_gcse = g->gcse;
76ee381a 84 this_target_bb_reorder = g->bb_reorder;
af4ba423 85 this_target_lower_subreg = g->lower_subreg;
3bd36029
RS
86}
87#endif
88
89#endif