1*e4b17023SJohn Marino /* Target-dependent globals.
2*e4b17023SJohn Marino Copyright (C) 2010 Free Software Foundation, Inc.
3*e4b17023SJohn Marino
4*e4b17023SJohn Marino This file is part of GCC.
5*e4b17023SJohn Marino
6*e4b17023SJohn Marino GCC is free software; you can redistribute it and/or modify it under
7*e4b17023SJohn Marino the terms of the GNU General Public License as published by the Free
8*e4b17023SJohn Marino Software Foundation; either version 3, or (at your option) any later
9*e4b17023SJohn Marino version.
10*e4b17023SJohn Marino
11*e4b17023SJohn Marino GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12*e4b17023SJohn Marino WARRANTY; without even the implied warranty of MERCHANTABILITY or
13*e4b17023SJohn Marino FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14*e4b17023SJohn Marino for more details.
15*e4b17023SJohn Marino
16*e4b17023SJohn Marino You should have received a copy of the GNU General Public License
17*e4b17023SJohn Marino along with GCC; see the file COPYING3. If not see
18*e4b17023SJohn Marino <http://www.gnu.org/licenses/>. */
19*e4b17023SJohn Marino
20*e4b17023SJohn Marino #include "config.h"
21*e4b17023SJohn Marino #include "system.h"
22*e4b17023SJohn Marino #include "coretypes.h"
23*e4b17023SJohn Marino #include "tm.h"
24*e4b17023SJohn Marino #include "insn-config.h"
25*e4b17023SJohn Marino #include "machmode.h"
26*e4b17023SJohn Marino #include "ggc.h"
27*e4b17023SJohn Marino #include "toplev.h"
28*e4b17023SJohn Marino #include "target-globals.h"
29*e4b17023SJohn Marino #include "flags.h"
30*e4b17023SJohn Marino #include "regs.h"
31*e4b17023SJohn Marino #include "rtl.h"
32*e4b17023SJohn Marino #include "hard-reg-set.h"
33*e4b17023SJohn Marino #include "reload.h"
34*e4b17023SJohn Marino #include "expmed.h"
35*e4b17023SJohn Marino #include "expr.h"
36*e4b17023SJohn Marino #include "optabs.h"
37*e4b17023SJohn Marino #include "libfuncs.h"
38*e4b17023SJohn Marino #include "cfgloop.h"
39*e4b17023SJohn Marino #include "ira-int.h"
40*e4b17023SJohn Marino #include "builtins.h"
41*e4b17023SJohn Marino #include "gcse.h"
42*e4b17023SJohn Marino #include "bb-reorder.h"
43*e4b17023SJohn Marino
44*e4b17023SJohn Marino #if SWITCHABLE_TARGET
45*e4b17023SJohn Marino struct target_globals default_target_globals = {
46*e4b17023SJohn Marino &default_target_flag_state,
47*e4b17023SJohn Marino &default_target_regs,
48*e4b17023SJohn Marino &default_target_rtl,
49*e4b17023SJohn Marino &default_target_hard_regs,
50*e4b17023SJohn Marino &default_target_reload,
51*e4b17023SJohn Marino &default_target_expmed,
52*e4b17023SJohn Marino &default_target_optabs,
53*e4b17023SJohn Marino &default_target_libfuncs,
54*e4b17023SJohn Marino &default_target_cfgloop,
55*e4b17023SJohn Marino &default_target_ira,
56*e4b17023SJohn Marino &default_target_ira_int,
57*e4b17023SJohn Marino &default_target_builtins,
58*e4b17023SJohn Marino &default_target_gcse,
59*e4b17023SJohn Marino &default_target_bb_reorder
60*e4b17023SJohn Marino };
61*e4b17023SJohn Marino
62*e4b17023SJohn Marino struct target_globals *
save_target_globals(void)63*e4b17023SJohn Marino save_target_globals (void)
64*e4b17023SJohn Marino {
65*e4b17023SJohn Marino struct target_globals *g;
66*e4b17023SJohn Marino
67*e4b17023SJohn Marino g = ggc_alloc_target_globals ();
68*e4b17023SJohn Marino g->flag_state = XCNEW (struct target_flag_state);
69*e4b17023SJohn Marino g->regs = XCNEW (struct target_regs);
70*e4b17023SJohn Marino g->rtl = ggc_alloc_cleared_target_rtl ();
71*e4b17023SJohn Marino g->hard_regs = XCNEW (struct target_hard_regs);
72*e4b17023SJohn Marino g->reload = XCNEW (struct target_reload);
73*e4b17023SJohn Marino g->expmed = XCNEW (struct target_expmed);
74*e4b17023SJohn Marino g->optabs = XCNEW (struct target_optabs);
75*e4b17023SJohn Marino g->libfuncs = ggc_alloc_cleared_target_libfuncs ();
76*e4b17023SJohn Marino g->cfgloop = XCNEW (struct target_cfgloop);
77*e4b17023SJohn Marino g->ira = XCNEW (struct target_ira);
78*e4b17023SJohn Marino g->ira_int = XCNEW (struct target_ira_int);
79*e4b17023SJohn Marino g->builtins = XCNEW (struct target_builtins);
80*e4b17023SJohn Marino g->gcse = XCNEW (struct target_gcse);
81*e4b17023SJohn Marino g->bb_reorder = XCNEW (struct target_bb_reorder);
82*e4b17023SJohn Marino restore_target_globals (g);
83*e4b17023SJohn Marino init_reg_sets ();
84*e4b17023SJohn Marino target_reinit ();
85*e4b17023SJohn Marino return g;
86*e4b17023SJohn Marino }
87*e4b17023SJohn Marino
88*e4b17023SJohn Marino #endif
89