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