insn-notes.def revision 169689
1169689Skan/* Insn note definitions. 2169689Skan Copyright (C) 2004, 2005 Free Software Foundation, Inc. 3169689Skan 4169689SkanThis file is part of GCC. 5169689Skan 6169689SkanGCC is free software; you can redistribute it and/or modify it under 7169689Skanthe terms of the GNU General Public License as published by the Free 8169689SkanSoftware Foundation; either version 2, or (at your option) any later 9169689Skanversion. 10169689Skan 11169689SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY 12169689SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or 13169689SkanFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14169689Skanfor more details. 15169689Skan 16169689SkanYou should have received a copy of the GNU General Public License 17169689Skanalong with GCC; see the file COPYING. If not, write to the Free 18169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 19169689Skan02110-1301, USA. */ 20169689Skan 21169689Skan/* This file defines all the codes that may appear in the 22169689Skan NOTE_LINE_NUMBER field of a NOTE insn for kinds of notes that are 23169689Skan not line numbers. Source files define DEF_INSN_NOTE appropriately 24169689Skan before including this file. 25169689Skan 26169689Skan We are slowly removing the concept of insn-chain notes from the 27169689Skan compiler. Adding new codes to this file is STRONGLY DISCOURAGED. 28169689Skan If you think you need one, look for other ways to express what you 29169689Skan mean, such as register notes or bits in the basic-block structure. */ 30169689Skan 31169689Skan/* Shorthand. */ 32169689Skan#define INSN_NOTE(NAME) DEF_INSN_NOTE (NOTE_INSN_##NAME) 33169689Skan 34169689Skan/* This note is used to get rid of an insn when it isn't safe to patch 35169689Skan the insn out of the chain. */ 36169689SkanINSN_NOTE (DELETED) 37169689Skan 38169689Skan/* Generated in place of user-declared labels when they are deleted. */ 39169689SkanINSN_NOTE (DELETED_LABEL) 40169689Skan 41169689Skan/* These are used to mark the beginning and end of a lexical block. 42169689Skan See NOTE_BLOCK and reorder_blocks. */ 43169689SkanINSN_NOTE (BLOCK_BEG) 44169689SkanINSN_NOTE (BLOCK_END) 45169689Skan 46169689Skan/* These mark the extremes of a loop. */ 47169689SkanINSN_NOTE (LOOP_BEG) 48169689SkanINSN_NOTE (LOOP_END) 49169689Skan 50169689Skan/* This note indicates the start of the real body of the function, 51169689Skan i.e. the point just after all of the parms have been moved into 52169689Skan their homes, etc. */ 53169689SkanINSN_NOTE (FUNCTION_BEG) 54169689Skan 55169689Skan/* This kind of note is generated at the end of the function body, 56169689Skan just before the return insn or return label. In an optimizing 57169689Skan compilation it is deleted by the first jump optimization, after 58169689Skan enabling that optimizer to determine whether control can fall 59169689Skan off the end of the function body without a return statement. */ 60169689SkanINSN_NOTE (FUNCTION_END) 61169689Skan 62169689Skan/* This marks the point immediately after the last prologue insn. */ 63169689SkanINSN_NOTE (PROLOGUE_END) 64169689Skan 65169689Skan/* This marks the point immediately prior to the first epilogue insn. */ 66169689SkanINSN_NOTE (EPILOGUE_BEG) 67169689Skan 68169689Skan/* These note where exception handling regions begin and end. 69169689Skan Uses NOTE_EH_HANDLER to identify the region in question. */ 70169689SkanINSN_NOTE (EH_REGION_BEG) 71169689SkanINSN_NOTE (EH_REGION_END) 72169689Skan 73169689Skan/* Generated whenever a duplicate line number note is output. 74169689Skan For example, one is output after the end of an inline function, 75169689Skan in order to prevent the line containing the inline call from 76169689Skan being counted twice in gcov. */ 77169689SkanINSN_NOTE (REPEATED_LINE_NUMBER) 78169689Skan 79169689Skan/* The location of a variable. */ 80169689SkanINSN_NOTE (VAR_LOCATION) 81169689Skan 82169689Skan/* Record the expected value of a register at a location. Uses 83169689Skan NOTE_EXPECTED_VALUE; stored as (eq (reg) (const_int)). */ 84169689SkanINSN_NOTE (EXPECTED_VALUE) 85169689Skan 86169689Skan/* Record the struct for the following basic block. Uses 87169689Skan NOTE_BASIC_BLOCK. FIXME: Redundant with the basic block pointer 88169689Skan now included in every insn. */ 89169689SkanINSN_NOTE (BASIC_BLOCK) 90169689Skan 91169689Skan/* Mark the inflection point in the instruction stream where we switch 92169689Skan between hot and cold text sections. */ 93169689SkanINSN_NOTE (SWITCH_TEXT_SECTIONS) 94169689Skan 95169689Skan#undef INSN_NOTE 96