Mercurial > hg > CbC > CbC_gcc
diff gcc/reg-notes.def @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | f6334be47118 |
children | 84e7813d76e9 |
line wrap: on
line diff
--- a/gcc/reg-notes.def Sun Aug 21 07:07:55 2011 +0900 +++ b/gcc/reg-notes.def Fri Oct 27 22:46:09 2017 +0900 @@ -1,6 +1,5 @@ /* Register note definitions. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 - Free Software Foundation, Inc. + Copyright (C) 2004-2017 Free Software Foundation, Inc. This file is part of GCC. @@ -19,12 +18,18 @@ <http://www.gnu.org/licenses/>. */ /* This file defines all the codes that may appear on individual - EXPR_LIST rtxes in the REG_NOTES chain of an insn. The codes are - stored in the mode field of the EXPR_LIST. Source files define - DEF_REG_NOTE appropriately before including this file. */ + EXPR_LIST, INSN_LIST and INT_LIST rtxes in the REG_NOTES chain of an insn. + The codes are stored in the mode field of the rtx. Source files + define DEF_REG_NOTE appropriately before including this file. + + CFA related notes meant for RTX_FRAME_RELATED_P instructions + should be declared with REG_CFA_NOTE macro instead of REG_NOTE. */ /* Shorthand. */ #define REG_NOTE(NAME) DEF_REG_NOTE (REG_##NAME) +#ifndef REG_CFA_NOTE +# define REG_CFA_NOTE(NAME) REG_NOTE (NAME) +#endif /* REG_DEP_TRUE is used in scheduler dependencies lists to represent a read-after-write dependency (i.e. a true data dependency). This is @@ -92,27 +97,29 @@ respectively. */ REG_NOTE (DEP_OUTPUT) REG_NOTE (DEP_ANTI) +REG_NOTE (DEP_CONTROL) -/* REG_BR_PROB is attached to JUMP_INSNs and CALL_INSNs. It has an - integer value. For jumps, it is the probability that this is a - taken branch. For calls, it is the probability that this call - won't return. */ +/* REG_BR_PROB is attached to JUMP_INSNs. It has an + integer value (in an INT_LIST). For jumps, it is the probability + that this is a taken branch. The integer represents a value of + profile_probability type. Use to_reg_br_prob_note and from_reg_br_prob_note + to extract the actual value. */ REG_NOTE (BR_PROB) /* Attached to a call insn; indicates that the call is malloc-like and that the pointer returned cannot alias anything else. */ REG_NOTE (NOALIAS) -/* REG_BR_PRED is attached to JUMP_INSNs and CALL_INSNSs. It contains +/* REG_BR_PRED is attached to JUMP_INSNs. It contains CONCAT of two integer value. First specifies the branch predictor that added the note, second specifies the predicted hitrate of - branch in the same format as REG_BR_PROB note uses. */ + branch in a fixed point arithmetic based on REG_BR_PROB_BASE. */ REG_NOTE (BR_PRED) /* Attached to insns that are RTX_FRAME_RELATED_P, but are too complex for DWARF to interpret what they imply. The attached rtx is used instead of intuition. */ -REG_NOTE (FRAME_RELATED_EXPR) +REG_CFA_NOTE (FRAME_RELATED_EXPR) /* Attached to insns that are RTX_FRAME_RELATED_P, but are too complex for FRAME_RELATED_EXPR intuition. The insn's first pattern must be @@ -122,7 +129,7 @@ with a base register and a constant offset. In the most complicated cases, this will result in a DW_CFA_def_cfa_expression with the rtx expression rendered in a dwarf location expression. */ -REG_NOTE (CFA_DEF_CFA) +REG_CFA_NOTE (CFA_DEF_CFA) /* Attached to insns that are RTX_FRAME_RELATED_P, but are too complex for FRAME_RELATED_EXPR intuition. This note adjusts the expression @@ -130,40 +137,57 @@ expression, relative to the old CFA expression. This rtx must be of the form (SET new-cfa-reg (PLUS old-cfa-reg const_int)). If the note rtx is NULL, we use the first SET of the insn. */ -REG_NOTE (CFA_ADJUST_CFA) +REG_CFA_NOTE (CFA_ADJUST_CFA) /* Similar to FRAME_RELATED_EXPR, with the additional information that this is a save to memory, i.e. will result in DW_CFA_offset or the like. The pattern or the insn should be a simple store relative to the CFA. */ -REG_NOTE (CFA_OFFSET) +REG_CFA_NOTE (CFA_OFFSET) /* Similar to FRAME_RELATED_EXPR, with the additional information that this is a save to a register, i.e. will result in DW_CFA_register. The insn or the pattern should be simple reg-reg move. */ -REG_NOTE (CFA_REGISTER) +REG_CFA_NOTE (CFA_REGISTER) /* Attached to insns that are RTX_FRAME_RELATED_P, but are too complex for FRAME_RELATED_EXPR intuition. This is a save to memory, i.e. will result in a DW_CFA_expression. The pattern or the insn should be a store of a register to an arbitrary (non-validated) memory address. */ -REG_NOTE (CFA_EXPRESSION) +REG_CFA_NOTE (CFA_EXPRESSION) + +/* Attached to insns that are RTX_FRAME_RELATED_P, but are too complex + for FRAME_RELATED_EXPR intuition. The DWARF expression computes the value of + the given register. */ +REG_CFA_NOTE (CFA_VAL_EXPRESSION) /* Attached to insns that are RTX_FRAME_RELATED_P, with the information that this is a restore operation, i.e. will result in DW_CFA_restore or the like. Either the attached rtx, or the destination of the insn's first pattern is the register to be restored. */ -REG_NOTE (CFA_RESTORE) +REG_CFA_NOTE (CFA_RESTORE) -/* Attached to insn that is RTX_FRAME_RELATED_P, marks insn that sets +/* Attached to insns that are RTX_FRAME_RELATED_P, marks insn that sets vDRAP from DRAP. If vDRAP is a register, vdrap_reg is initalized to the argument, if it is a MEM, it is ignored. */ -REG_NOTE (CFA_SET_VDRAP) +REG_CFA_NOTE (CFA_SET_VDRAP) + +/* Attached to insns that are RTX_FRAME_RELATED_P, indicating a window + save operation, i.e. will result in a DW_CFA_GNU_window_save. + The argument is ignored. */ +REG_CFA_NOTE (CFA_WINDOW_SAVE) -/* Indicates that REG holds the exception context for the function. - This context is shared by inline functions, so the code to acquire - the real exception context is delayed until after inlining. */ -REG_NOTE (EH_CONTEXT) +/* Attached to insns that are RTX_FRAME_RELATED_P, marks the insn as + requiring that all queued information should be flushed *before* insn, + regardless of what is visible in the rtl. The argument is ignored. + This is normally used for a call instruction which is not exposed to + the rest of the compiler as a CALL_INSN. */ +REG_CFA_NOTE (CFA_FLUSH_QUEUE) + +/* Attached to insns that are RTX_FRAME_RELATED_P, toggling the mangling status + of return address. Currently it's only used by AArch64. The argument is + ignored. */ +REG_CFA_NOTE (CFA_TOGGLE_RA_MANGLE) /* Indicates what exception region an INSN belongs in. This is used to indicate what region to which a call may throw. REGION 0 @@ -181,11 +205,37 @@ computed goto. */ REG_NOTE (NON_LOCAL_GOTO) -/* Indicates that a jump crosses between hot and cold sections in a - (partitioned) assembly or .o file, and therefore should not be - reduced to a simpler jump by optimizations. */ -REG_NOTE (CROSSING_JUMP) - /* This kind of note is generated at each to `setjmp', and similar functions that can return twice. */ REG_NOTE (SETJMP) + +/* This kind of note is generated at each transactional memory + builtin, to indicate we need to generate transaction restart + edges for this insn. */ +REG_NOTE (TM) + +/* Indicates the cumulative offset of the stack pointer accounting + for pushed arguments. This will only be generated when + ACCUMULATE_OUTGOING_ARGS is false. */ +REG_NOTE (ARGS_SIZE) + +/* Used for communication between IRA and caller-save.c, indicates + that the return value of a call can be used to reinitialize a + pseudo reg. */ +REG_NOTE (RETURNED) + +/* Indicates the instruction is a stack check probe that should not + be combined with other stack adjustments. */ +REG_NOTE (STACK_CHECK) + +/* Used to mark a call with the function decl called by the call. + The decl might not be available in the call due to splitting of the call + insn. This note is a SYMBOL_REF. */ +REG_NOTE (CALL_DECL) + +/* Indicate that a call should not be verified for control-flow consistency. + The target address of the call is assumed as a valid address and no check + to validate a branch to the target address is needed. The call is marked + when a called function has a 'notrack' attribute. This note is used by the + compiler when the option -fcf-protection=branch is specified. */ +REG_NOTE (CALL_NOCF_CHECK)