1*e4b17023SJohn Marino/* Insn note definitions. 2*e4b17023SJohn Marino Copyright (C) 2004, 2005, 2007, 2011 Free Software Foundation, Inc. 3*e4b17023SJohn Marino 4*e4b17023SJohn MarinoThis file is part of GCC. 5*e4b17023SJohn Marino 6*e4b17023SJohn MarinoGCC is free software; you can redistribute it and/or modify it under 7*e4b17023SJohn Marinothe terms of the GNU General Public License as published by the Free 8*e4b17023SJohn MarinoSoftware Foundation; either version 3, or (at your option) any later 9*e4b17023SJohn Marinoversion. 10*e4b17023SJohn Marino 11*e4b17023SJohn MarinoGCC is distributed in the hope that it will be useful, but WITHOUT ANY 12*e4b17023SJohn MarinoWARRANTY; without even the implied warranty of MERCHANTABILITY or 13*e4b17023SJohn MarinoFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14*e4b17023SJohn Marinofor more details. 15*e4b17023SJohn Marino 16*e4b17023SJohn MarinoYou should have received a copy of the GNU General Public License 17*e4b17023SJohn Marinoalong with GCC; see the file COPYING3. If not see 18*e4b17023SJohn Marino<http://www.gnu.org/licenses/>. */ 19*e4b17023SJohn Marino 20*e4b17023SJohn Marino/* This file defines all the codes that may appear in the 21*e4b17023SJohn Marino NOTE_LINE_NUMBER field of a NOTE insn for kinds of notes that are 22*e4b17023SJohn Marino not line numbers. Source files define DEF_INSN_NOTE appropriately 23*e4b17023SJohn Marino before including this file. 24*e4b17023SJohn Marino 25*e4b17023SJohn Marino We are slowly removing the concept of insn-chain notes from the 26*e4b17023SJohn Marino compiler. Adding new codes to this file is STRONGLY DISCOURAGED. 27*e4b17023SJohn Marino If you think you need one, look for other ways to express what you 28*e4b17023SJohn Marino mean, such as register notes or bits in the basic-block structure. */ 29*e4b17023SJohn Marino 30*e4b17023SJohn Marino/* Shorthand. */ 31*e4b17023SJohn Marino#define INSN_NOTE(NAME) DEF_INSN_NOTE (NOTE_INSN_##NAME) 32*e4b17023SJohn Marino 33*e4b17023SJohn Marino/* This note is used to get rid of an insn when it isn't safe to patch 34*e4b17023SJohn Marino the insn out of the chain. */ 35*e4b17023SJohn MarinoINSN_NOTE (DELETED) 36*e4b17023SJohn Marino 37*e4b17023SJohn Marino/* Generated in place of user-declared labels when they are deleted. */ 38*e4b17023SJohn MarinoINSN_NOTE (DELETED_LABEL) 39*e4b17023SJohn Marino/* Similarly, but for labels that have been present in debug stmts 40*e4b17023SJohn Marino earlier and thus will only appear with -g. These must use different 41*e4b17023SJohn Marino label namespace. */ 42*e4b17023SJohn MarinoINSN_NOTE (DELETED_DEBUG_LABEL) 43*e4b17023SJohn Marino 44*e4b17023SJohn Marino/* These are used to mark the beginning and end of a lexical block. 45*e4b17023SJohn Marino See NOTE_BLOCK and reorder_blocks. */ 46*e4b17023SJohn MarinoINSN_NOTE (BLOCK_BEG) 47*e4b17023SJohn MarinoINSN_NOTE (BLOCK_END) 48*e4b17023SJohn Marino 49*e4b17023SJohn Marino/* This note indicates the start of the real body of the function, 50*e4b17023SJohn Marino i.e. the point just after all of the parms have been moved into 51*e4b17023SJohn Marino their homes, etc. */ 52*e4b17023SJohn MarinoINSN_NOTE (FUNCTION_BEG) 53*e4b17023SJohn Marino 54*e4b17023SJohn Marino/* This marks the point immediately after the last prologue insn. */ 55*e4b17023SJohn MarinoINSN_NOTE (PROLOGUE_END) 56*e4b17023SJohn Marino 57*e4b17023SJohn Marino/* This marks the point immediately prior to the first epilogue insn. */ 58*e4b17023SJohn MarinoINSN_NOTE (EPILOGUE_BEG) 59*e4b17023SJohn Marino 60*e4b17023SJohn Marino/* These note where exception handling regions begin and end. 61*e4b17023SJohn Marino Uses NOTE_EH_HANDLER to identify the region in question. */ 62*e4b17023SJohn MarinoINSN_NOTE (EH_REGION_BEG) 63*e4b17023SJohn MarinoINSN_NOTE (EH_REGION_END) 64*e4b17023SJohn Marino 65*e4b17023SJohn Marino/* The location of a variable. */ 66*e4b17023SJohn MarinoINSN_NOTE (VAR_LOCATION) 67*e4b17023SJohn Marino 68*e4b17023SJohn Marino/* The values passed to callee. */ 69*e4b17023SJohn MarinoINSN_NOTE (CALL_ARG_LOCATION) 70*e4b17023SJohn Marino 71*e4b17023SJohn Marino/* Record the struct for the following basic block. Uses 72*e4b17023SJohn Marino NOTE_BASIC_BLOCK. FIXME: Redundant with the basic block pointer 73*e4b17023SJohn Marino now included in every insn. */ 74*e4b17023SJohn MarinoINSN_NOTE (BASIC_BLOCK) 75*e4b17023SJohn Marino 76*e4b17023SJohn Marino/* Mark the inflection point in the instruction stream where we switch 77*e4b17023SJohn Marino between hot and cold text sections. */ 78*e4b17023SJohn MarinoINSN_NOTE (SWITCH_TEXT_SECTIONS) 79*e4b17023SJohn Marino 80*e4b17023SJohn Marino/* When emitting dwarf2 frame information, contains a directive that 81*e4b17023SJohn Marino should be emitted. */ 82*e4b17023SJohn MarinoINSN_NOTE (CFI) 83*e4b17023SJohn Marino 84*e4b17023SJohn Marino/* When emitting dwarf2 frame information, contains the number of a debug 85*e4b17023SJohn Marino label that should be emitted. */ 86*e4b17023SJohn MarinoINSN_NOTE (CFI_LABEL) 87*e4b17023SJohn Marino 88*e4b17023SJohn Marino#undef INSN_NOTE 89