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