1 /* Mudflap: narrow-pointer bounds-checking by tree rewriting. 2 Copyright (C) 2001, 2002, 2003, 2007, 2008, 2009, 2010 3 Free Software Foundation, Inc. 4 Contributed by Frank Ch. Eigler <fche@redhat.com> 5 6 This file is part of GCC. 7 8 GCC is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free 10 Software Foundation; either version 3, or (at your option) any later 11 version. 12 13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY 14 WARRANTY; without even the implied warranty of MERCHANTABILITY or 15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with GCC; see the file COPYING3. If not see 20 <http://www.gnu.org/licenses/>. */ 21 22 23 #include "config.h" 24 #include "system.h" 25 #include "coretypes.h" 26 #include "tm.h" 27 #include "tree.h" 28 #include "tree-inline.h" 29 #include "gimple.h" 30 #include "hashtab.h" 31 #include "output.h" 32 #include "langhooks.h" 33 #include "tree-mudflap.h" 34 #include "tree-pass.h" 35 #include "ggc.h" 36 #include "diagnostic-core.h" 37 38 39 40 /* This file contains placeholder functions, to be used only for 41 language processors that cannot handle tree-mudflap.c directly. 42 (e.g. Fortran). */ 43 44 static void 45 nogo (void) 46 { 47 sorry ("mudflap: this language is not supported"); 48 } 49 50 void 51 mudflap_enqueue_decl (tree obj ATTRIBUTE_UNUSED) 52 { 53 nogo (); 54 } 55 56 void 57 mudflap_enqueue_constant (tree obj ATTRIBUTE_UNUSED) 58 { 59 nogo (); 60 } 61 62 void 63 mudflap_finish_file (void) 64 { 65 nogo (); 66 } 67 68 int 69 mf_marked_p (tree t ATTRIBUTE_UNUSED) 70 { 71 nogo (); 72 return 0; 73 } 74 75 tree 76 mf_mark (tree t ATTRIBUTE_UNUSED) 77 { 78 nogo (); 79 return NULL; 80 } 81 82 /* The pass structures must exist, but need not do anything. */ 83 84 static bool 85 gate_mudflap (void) 86 { 87 return flag_mudflap != 0; 88 } 89 90 struct gimple_opt_pass pass_mudflap_1 = 91 { 92 { 93 GIMPLE_PASS, 94 "mudflap1", /* name */ 95 gate_mudflap, /* gate */ 96 NULL, /* execute */ 97 NULL, /* sub */ 98 NULL, /* next */ 99 0, /* static_pass_number */ 100 TV_NONE, /* tv_id */ 101 0, /* properties_required */ 102 0, /* properties_provided */ 103 0, /* properties_destroyed */ 104 0, /* todo_flags_start */ 105 0 /* todo_flags_finish */ 106 } 107 }; 108 109 struct gimple_opt_pass pass_mudflap_2 = 110 { 111 { 112 GIMPLE_PASS, 113 "mudflap2", /* name */ 114 gate_mudflap, /* gate */ 115 NULL, /* execute */ 116 NULL, /* sub */ 117 NULL, /* next */ 118 0, /* static_pass_number */ 119 TV_NONE, /* tv_id */ 120 0, /* properties_required */ 121 0, /* properties_provided */ 122 0, /* properties_destroyed */ 123 0, /* todo_flags_start */ 124 0 /* todo_flags_finish */ 125 } 126 }; 127 128 /* Instead of: 129 #include "gt-tree-mudflap.h" 130 We prepare a little dummy struct here. 131 */ 132 133 EXPORTED_CONST struct ggc_root_tab gt_ggc_r_gt_tree_mudflap_h[] = { 134 LAST_GGC_ROOT_TAB 135 }; 136