1 /* Target-dependent globals. 2 Copyright (C) 2010 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 #include "config.h" 21 #include "system.h" 22 #include "coretypes.h" 23 #include "tm.h" 24 #include "insn-config.h" 25 #include "machmode.h" 26 #include "ggc.h" 27 #include "toplev.h" 28 #include "target-globals.h" 29 #include "flags.h" 30 #include "regs.h" 31 #include "rtl.h" 32 #include "hard-reg-set.h" 33 #include "reload.h" 34 #include "expmed.h" 35 #include "expr.h" 36 #include "optabs.h" 37 #include "libfuncs.h" 38 #include "cfgloop.h" 39 #include "ira-int.h" 40 #include "builtins.h" 41 #include "gcse.h" 42 #include "bb-reorder.h" 43 44 #if SWITCHABLE_TARGET 45 struct target_globals default_target_globals = { 46 &default_target_flag_state, 47 &default_target_regs, 48 &default_target_rtl, 49 &default_target_hard_regs, 50 &default_target_reload, 51 &default_target_expmed, 52 &default_target_optabs, 53 &default_target_libfuncs, 54 &default_target_cfgloop, 55 &default_target_ira, 56 &default_target_ira_int, 57 &default_target_builtins, 58 &default_target_gcse, 59 &default_target_bb_reorder 60 }; 61 62 struct target_globals * 63 save_target_globals (void) 64 { 65 struct target_globals *g; 66 67 g = ggc_alloc_target_globals (); 68 g->flag_state = XCNEW (struct target_flag_state); 69 g->regs = XCNEW (struct target_regs); 70 g->rtl = ggc_alloc_cleared_target_rtl (); 71 g->hard_regs = XCNEW (struct target_hard_regs); 72 g->reload = XCNEW (struct target_reload); 73 g->expmed = XCNEW (struct target_expmed); 74 g->optabs = XCNEW (struct target_optabs); 75 g->libfuncs = ggc_alloc_cleared_target_libfuncs (); 76 g->cfgloop = XCNEW (struct target_cfgloop); 77 g->ira = XCNEW (struct target_ira); 78 g->ira_int = XCNEW (struct target_ira_int); 79 g->builtins = XCNEW (struct target_builtins); 80 g->gcse = XCNEW (struct target_gcse); 81 g->bb_reorder = XCNEW (struct target_bb_reorder); 82 restore_target_globals (g); 83 init_reg_sets (); 84 target_reinit (); 85 return g; 86 } 87 88 #endif 89