| /* Insn note definitions. |
| Copyright (C) 2004 Free Software Foundation, Inc. |
| |
| This file is part of GCC. |
| |
| GCC is free software; you can redistribute it and/or modify it under |
| the terms of the GNU General Public License as published by the Free |
| Software Foundation; either version 2, or (at your option) any later |
| version. |
| |
| GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GCC; see the file COPYING. If not, write to the Free |
| Software Foundation, 59 Temple Place - Suite 330, Boston, MA |
| 02111-1307, USA. */ |
| |
| /* This file defines all the codes that may appear in the |
| NOTE_LINE_NUMBER field of a NOTE insn for kinds of notes that are |
| not line numbers. Source files define DEF_INSN_NOTE appropriately |
| before including this file. |
| |
| We are slowly removing the concept of insn-chain notes from the |
| compiler. Adding new codes to this file is STRONGLY DISCOURAGED. |
| If you think you need one, look for other ways to express what you |
| mean, such as register notes or bits in the basic-block structure. */ |
| |
| /* Shorthand. */ |
| #define INSN_NOTE(NAME) DEF_INSN_NOTE (NOTE_INSN_##NAME) |
| |
| /* This note is used to get rid of an insn when it isn't safe to patch |
| the insn out of the chain. */ |
| INSN_NOTE (DELETED) |
| |
| /* Generated in place of user-declared labels when they are deleted. */ |
| INSN_NOTE (DELETED_LABEL) |
| |
| /* These are used to mark the beginning and end of a lexical block. |
| See NOTE_BLOCK and reorder_blocks. */ |
| INSN_NOTE (BLOCK_BEG) |
| INSN_NOTE (BLOCK_END) |
| |
| /* These mark the extremes of a loop. */ |
| INSN_NOTE (LOOP_BEG) |
| INSN_NOTE (LOOP_END) |
| |
| /* This note indicates the start of the real body of the function, |
| i.e. the point just after all of the parms have been moved into |
| their homes, etc. */ |
| INSN_NOTE (FUNCTION_BEG) |
| |
| /* This kind of note is generated at the end of the function body, |
| just before the return insn or return label. In an optimizing |
| compilation it is deleted by the first jump optimization, after |
| enabling that optimizer to determine whether control can fall |
| off the end of the function body without a return statement. */ |
| INSN_NOTE (FUNCTION_END) |
| |
| /* This marks the point immediately after the last prologue insn. */ |
| INSN_NOTE (PROLOGUE_END) |
| |
| /* This marks the point immediately prior to the first epilogue insn. */ |
| INSN_NOTE (EPILOGUE_BEG) |
| |
| /* These note where exception handling regions begin and end. |
| Uses NOTE_EH_HANDLER to identify the region in question. */ |
| INSN_NOTE (EH_REGION_BEG) |
| INSN_NOTE (EH_REGION_END) |
| |
| /* Generated whenever a duplicate line number note is output. |
| For example, one is output after the end of an inline function, |
| in order to prevent the line containing the inline call from |
| being counted twice in gcov. */ |
| INSN_NOTE (REPEATED_LINE_NUMBER) |
| |
| /* The location of a variable. */ |
| INSN_NOTE (VAR_LOCATION) |
| |
| /* Record the expected value of a register at a location. Uses |
| NOTE_EXPECTED_VALUE; stored as (eq (reg) (const_int)). */ |
| INSN_NOTE (EXPECTED_VALUE) |
| |
| /* Record the struct for the following basic block. Uses |
| NOTE_BASIC_BLOCK. FIXME: Redundant with the basic block pointer |
| now included in every insn. */ |
| INSN_NOTE (BASIC_BLOCK) |
| |
| /* Record that the current basic block is unlikely to be executed and |
| should be moved to the UNLIKELY_EXECUTED_TEXT_SECTION. FIXME: Make |
| this a bit on the basic block structure. */ |
| INSN_NOTE (UNLIKELY_EXECUTED_CODE) |
| |
| #undef INSN_NOTE |