This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

rtl.h comment tweeks


No functional changes.


r~


        * rtl.h: Redistribute enum reg_note documentation. 
        Kill trailing whitespace.
        * rtl.c (reg_note_name): Adjust to match enum reg_note tweeks.
        Kill trailing whitespace.

Index: rtl.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/rtl.c,v
retrieving revision 1.64
diff -c -p -d -r1.64 rtl.c
*** rtl.c	2000/03/25 18:34:04	1.64
--- rtl.c	2000/03/29 01:51:29
*************** const enum machine_mode class_narrowest_
*** 188,194 ****
      /* MODE_COMPLEX_INT */	CQImode,
      /* MODE_COMPLEX_FLOAT */	QCmode
  };
! 			
  
  /* Indexed by rtx code, gives a sequence of operand-types for
     rtx's of that code.  The sequence is a C string in which
--- 188,194 ----
      /* MODE_COMPLEX_INT */	CQImode,
      /* MODE_COMPLEX_FLOAT */	QCmode
  };
! 
  
  /* Indexed by rtx code, gives a sequence of operand-types for
     rtx's of that code.  The sequence is a C string in which
*************** const char * const rtx_format[] = {
*** 228,261 ****
     that rtx code.  See rtl.def for documentation on the defined classes.  */
  
  const char rtx_class[] = {
! #define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS)   CLASS, 
  #include "rtl.def"		/* rtl expressions are defined here */
  #undef DEF_RTL_EXPR
  };
  
  /* Names for kinds of NOTEs and REG_NOTEs.  */
  
! const char * const note_insn_name[] = { 0       , "NOTE_INSN_DELETED",
! 			   "NOTE_INSN_BLOCK_BEG", "NOTE_INSN_BLOCK_END",
! 			   "NOTE_INSN_LOOP_BEG", "NOTE_INSN_LOOP_END",
! 			   "NOTE_INSN_FUNCTION_END", "NOTE_INSN_SETJMP",
! 			   "NOTE_INSN_LOOP_CONT", "NOTE_INSN_LOOP_VTOP",
! 			   "NOTE_INSN_PROLOGUE_END", "NOTE_INSN_EPILOGUE_BEG",
! 			   "NOTE_INSN_DELETED_LABEL", "NOTE_INSN_FUNCTION_BEG",
! 			   "NOTE_INSN_EH_REGION_BEG", "NOTE_INSN_EH_REGION_END",
! 			   "NOTE_REPEATED_LINE_NUMBER", "NOTE_INSN_RANGE_START",
! 			   "NOTE_INSN_RANGE_END", "NOTE_INSN_LIVE",
! 			   "NOTE_INSN_BASIC_BLOCK" };
  
! const char * const reg_note_name[] = { "", "REG_DEAD", "REG_INC", "REG_EQUIV", "REG_WAS_0",
! 			  "REG_EQUAL", "REG_RETVAL", "REG_LIBCALL",
! 			  "REG_NONNEG", "REG_NO_CONFLICT", "REG_UNUSED",
! 			  "REG_CC_SETTER", "REG_CC_USER", "REG_LABEL",
! 			  "REG_DEP_ANTI", "REG_DEP_OUTPUT", "REG_BR_PROB",
! 			  "REG_EXEC_COUNT", "REG_NOALIAS", "REG_SAVE_AREA",
! 			  "REG_BR_PRED", "REG_EH_CONTEXT",
! 			  "REG_FRAME_RELATED_EXPR", "REG_EH_REGION",
! 			  "REG_EH_RETHROW", "REG_SAVE_NOTE" };
  
  static void fatal_with_file_and_line PARAMS ((FILE *, const char *, ...))
    ATTRIBUTE_PRINTF_2 ATTRIBUTE_NORETURN;
--- 228,265 ----
     that rtx code.  See rtl.def for documentation on the defined classes.  */
  
  const char rtx_class[] = {
! #define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS)   CLASS,
  #include "rtl.def"		/* rtl expressions are defined here */
  #undef DEF_RTL_EXPR
  };
  
  /* Names for kinds of NOTEs and REG_NOTEs.  */
  
! const char * const note_insn_name[] =
! {
!   0, "NOTE_INSN_DELETED",
!   "NOTE_INSN_BLOCK_BEG", "NOTE_INSN_BLOCK_END",
!   "NOTE_INSN_LOOP_BEG", "NOTE_INSN_LOOP_END",
!   "NOTE_INSN_FUNCTION_END", "NOTE_INSN_SETJMP",
!   "NOTE_INSN_LOOP_CONT", "NOTE_INSN_LOOP_VTOP",
!   "NOTE_INSN_PROLOGUE_END", "NOTE_INSN_EPILOGUE_BEG",
!   "NOTE_INSN_DELETED_LABEL", "NOTE_INSN_FUNCTION_BEG",
!   "NOTE_INSN_EH_REGION_BEG", "NOTE_INSN_EH_REGION_END",
!   "NOTE_REPEATED_LINE_NUMBER", "NOTE_INSN_RANGE_START",
!   "NOTE_INSN_RANGE_END", "NOTE_INSN_LIVE",
!   "NOTE_INSN_BASIC_BLOCK"
! };
  
! const char * const reg_note_name[] =
! {
!   "", "REG_DEAD", "REG_INC", "REG_EQUIV", "REG_EQUAL",
!   "REG_WAS_0", "REG_RETVAL", "REG_LIBCALL", "REG_NONNEG",
!   "REG_NO_CONFLICT", "REG_UNUSED", "REG_CC_SETTER", "REG_CC_USER",
!   "REG_LABEL", "REG_DEP_ANTI", "REG_DEP_OUTPUT", "REG_BR_PROB",
!   "REG_EXEC_COUNT", "REG_NOALIAS", "REG_SAVE_AREA", "REG_BR_PRED",
!   "REG_FRAME_RELATED_EXPR", "REG_EH_CONTEXT", "REG_EH_REGION",
!   "REG_EH_RETHROW", "REG_SAVE_NOTE"
! };
  
  static void fatal_with_file_and_line PARAMS ((FILE *, const char *, ...))
    ATTRIBUTE_PRINTF_2 ATTRIBUTE_NORETURN;
*************** rtvec_alloc (n)
*** 271,277 ****
       int n;
  {
    rtvec rt;
!  
    if (ggc_p)
      rt = ggc_alloc_rtvec (n);
    else
--- 275,281 ----
       int n;
  {
    rtvec rt;
! 
    if (ggc_p)
      rt = ggc_alloc_rtvec (n);
    else
*************** rtx_alloc (code)
*** 311,317 ****
  
        /* This function is called more than any other in GCC, so we
  	 manipulate the obstack directly.
!        
  	 Even though rtx objects are word aligned, we may be sharing
  	 an obstack with tree nodes, which may have to be double-word
  	 aligned.  So align our length to the alignment mask in the
--- 315,321 ----
  
        /* This function is called more than any other in GCC, so we
  	 manipulate the obstack directly.
! 
  	 Even though rtx objects are word aligned, we may be sharing
  	 an obstack with tree nodes, which may have to be double-word
  	 aligned.  So align our length to the alignment mask in the
*************** copy_rtx (orig)
*** 451,457 ****
  	case '0':
  	  /* These are left unchanged.  */
  	  break;
! 	  
  	default:
  	  abort ();
  	}
--- 455,461 ----
  	case '0':
  	  /* These are left unchanged.  */
  	  break;
! 
  	default:
  	  abort ();
  	}
*************** copy_most_rtx (orig, may_share)
*** 498,504 ****
    copy->volatil = orig->volatil;
    copy->unchanging = orig->unchanging;
    copy->integrated = orig->integrated;
!   
    format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
  
    for (i = 0; i < GET_RTX_LENGTH (GET_CODE (copy)); i++)
--- 502,508 ----
    copy->volatil = orig->volatil;
    copy->unchanging = orig->unchanging;
    copy->integrated = orig->integrated;
! 
    format_ptr = GET_RTX_FORMAT (GET_CODE (copy));
  
    for (i = 0; i < GET_RTX_LENGTH (GET_CODE (copy)); i++)
*************** read_skip_spaces (infile)
*** 771,777 ****
  	  break;
  
  	case ';':
! 	  do 
  	    c = getc (infile);
  	  while (c != '\n' && c != EOF);
  	  read_rtx_lineno++;
--- 775,781 ----
  	  break;
  
  	case ';':
! 	  do
  	    c = getc (infile);
  	  while (c != '\n' && c != EOF);
  	  read_rtx_lineno++;
*************** read_skip_spaces (infile)
*** 783,789 ****
  	    c = getc (infile);
  	    if (c != '*')
  	      fatal_expected_char (infile, '*', c);
! 	  
  	    prevc = 0;
  	    while ((c = getc (infile)) && c != EOF)
  	      {
--- 787,793 ----
  	    c = getc (infile);
  	    if (c != '*')
  	      fatal_expected_char (infile, '*', c);
! 
  	    prevc = 0;
  	    while ((c = getc (infile)) && c != EOF)
  	      {
*************** read_rtx (infile)
*** 977,983 ****
  	    break;
   	  }
  	/* Now process the vector.  */
!   
        case 'E':
  	{
  	  register struct rtx_list *next_rtx, *rtx_list_link;
--- 981,987 ----
  	    break;
   	  }
  	/* Now process the vector.  */
! 
        case 'E':
  	{
  	  register struct rtx_list *next_rtx, *rtx_list_link;
*************** read_rtx (infile)
*** 1088,1094 ****
  #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
  	tmp_wide = atol (tmp_char);
  #else
! 	/* Prefer atoll over atoq, since the former is in the ISO C9X draft. 
  	   But prefer not to use our hand-rolled function above either.  */
  #if defined(HAVE_ATOLL) || !defined(HAVE_ATOQ)
  	tmp_wide = atoll (tmp_char);
--- 1092,1098 ----
  #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
  	tmp_wide = atol (tmp_char);
  #else
! 	/* Prefer atoll over atoq, since the former is in the ISO C9X draft.
  	   But prefer not to use our hand-rolled function above either.  */
  #if defined(HAVE_ATOLL) || !defined(HAVE_ATOQ)
  	tmp_wide = atoll (tmp_char);
Index: rtl.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/rtl.h,v
retrieving revision 1.181
diff -c -p -d -r1.181 rtl.h
*** rtl.h	2000/03/25 18:34:04	1.181
--- rtl.h	2000/03/29 01:51:29
*************** typedef struct rtx_def
*** 149,155 ****
       0 if the MEM was a variable or the result of a * operator in C;
       1 if it was the result of a . or -> operator (on a struct) in C.
       1 in a REG if the register is used only in exit code a loop.
!      1 in a SUBREG expression if was generated from a variable with a 
       promoted mode.
       1 in a CODE_LABEL if the label is used for nonlocal gotos
       and must not be deleted even if its count is zero.
--- 149,155 ----
       0 if the MEM was a variable or the result of a * operator in C;
       1 if it was the result of a . or -> operator (on a struct) in C.
       1 in a REG if the register is used only in exit code a loop.
!      1 in a SUBREG expression if was generated from a variable with a
       promoted mode.
       1 in a CODE_LABEL if the label is used for nonlocal gotos
       and must not be deleted even if its count is zero.
*************** typedef struct rtx_def
*** 163,169 ****
    unsigned int in_struct : 1;
    /* 1 if this rtx is used.  This is used for copying shared structure.
       See `unshare_all_rtl'.
!      In a REG, this is not needed for that purpose, and used instead 
       in `leaf_renumber_regs_insn'.
       In a SYMBOL_REF, means that emit_library_call
       has used it as the function.  */
--- 163,169 ----
    unsigned int in_struct : 1;
    /* 1 if this rtx is used.  This is used for copying shared structure.
       See `unshare_all_rtl'.
!      In a REG, this is not needed for that purpose, and used instead
       in `leaf_renumber_regs_insn'.
       In a SYMBOL_REF, means that emit_library_call
       has used it as the function.  */
*************** typedef struct rtx_def
*** 174,180 ****
    unsigned integrated : 1;
    /* 1 in an INSN or a SET if this rtx is related to the call frame,
       either changing how we compute the frame address or saving and
!      restoring registers in the prologue and epilogue.  
       1 in a MEM if the MEM refers to a scalar, rather than a member of
       an aggregate.  */
    unsigned frame_related : 1;
--- 174,180 ----
    unsigned integrated : 1;
    /* 1 in an INSN or a SET if this rtx is related to the call frame,
       either changing how we compute the frame address or saving and
!      restoring registers in the prologue and epilogue.
       1 in a MEM if the MEM refers to a scalar, rather than a member of
       an aggregate.  */
    unsigned frame_related : 1;
*************** extern void rtvec_check_failed_bounds PA
*** 398,498 ****
     clear, the insn should be executed only if the branch is not taken.  */
  #define INSN_FROM_TARGET_P(INSN) ((INSN)->in_struct)
  
  /* Holds a list of notes on what this insn does to various REGs.
!    It is a chain of EXPR_LIST rtx's, where the second operand
!    is the chain pointer and the first operand is the REG being described.
     The mode field of the EXPR_LIST contains not a real machine mode
!    but a value that says what this note says about the REG:
!      REG_DEAD means that the value in REG dies in this insn (i.e., it is
!    not needed past this insn).  If REG is set in this insn, the REG_DEAD
!    note may, but need not, be omitted.
!      REG_INC means that the REG is autoincremented or autodecremented.
!      REG_EQUIV describes the insn as a whole; it says that the insn
!    sets a register to a constant value or to be equivalent to a memory
!    address.  If the register is spilled to the stack then the constant
!    value should be substituted for it.  The contents of the REG_EQUIV
!    is the constant value or memory address, which may be different
!    from the source of the SET although it has the same value.  A
!    REG_EQUIV note may also appear on an insn which copies a register
!    parameter to a pseudo-register, if there is a memory address which
!    could be used to hold that pseudo-register throughout the function.
!      REG_EQUAL is like REG_EQUIV except that the destination
!    is only momentarily equal to the specified rtx.  Therefore, it
!    cannot be used for substitution; but it can be used for cse.
!      REG_RETVAL means that this insn copies the return-value of
!    a library call out of the hard reg for return values.  This note
!    is actually an INSN_LIST and it points to the first insn involved
!    in setting up arguments for the call.  flow.c uses this to delete
!    the entire library call when its result is dead.
!      REG_LIBCALL is the inverse of REG_RETVAL: it goes on the first insn
!    of the library call and points at the one that has the REG_RETVAL.
!      REG_WAS_0 says that the register set in this insn held 0 before the insn.
!    The contents of the note is the insn that stored the 0.
!    If that insn is deleted or patched to a NOTE, the REG_WAS_0 is inoperative.
!    The REG_WAS_0 note is actually an INSN_LIST, not an EXPR_LIST.
!      REG_NONNEG means that the register is always nonnegative during
!    the containing loop.  This is used in branches so that decrement and
!    branch instructions terminating on zero can be matched.  There must be
!    an insn pattern in the md file named `decrement_and_branch_until_zero'
!    or else this will never be added to any instructions.
!      REG_NO_CONFLICT means there is no conflict *after this insn*
!    between the register in the note and the destination of this insn.
!      REG_UNUSED identifies a register set in this insn and never used.
!      REG_CC_SETTER and REG_CC_USER link a pair of insns that set and use
!    CC0, respectively.  Normally, these are required to be consecutive insns,
!    but we permit putting a cc0-setting insn in the delay slot of a branch
!    as long as only one copy of the insn exists.  In that case, these notes
!    point from one to the other to allow code generation to determine what
!    any require information and to properly update CC_STATUS.
!      REG_LABEL points to a CODE_LABEL.  Used by non-JUMP_INSNs to
!    say that the CODE_LABEL contained in the REG_LABEL note is used
!    by the insn.
!      REG_DEP_ANTI is used in LOG_LINKS which represent anti (write after read)
!    dependencies.  REG_DEP_OUTPUT is used in LOG_LINKS which represent output
!    (write after write) dependencies.  Data dependencies, which are the only
!    type of LOG_LINK created by flow, are represented by a 0 reg note kind.  */
! /*   REG_BR_PROB is attached to JUMP_INSNs and CALL_INSNs when the flag
!    -fbranch-probabilities is given.  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_EXEC_COUNT is attached to the first insn of each basic block, and
!    the first insn after each CALL_INSN.  It indicates how many times this
!    block was executed.
!      REG_SAVE_AREA is used to optimize rtl generated by dynamic stack
!    allocations for targets where SETJMP_VIA_SAVE_AREA is true.
!      REG_BR_PRED is attached to JUMP_INSNs only, it holds the branch prediction
!    flags computed by get_jump_flags() after dbr scheduling is complete.
!      REG_FRAME_RELATED_EXPR is 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_EH_REGION is used to indicate what exception region an INSN
!    belongs in.  This can be used to indicate what region a call may throw
!    to. a REGION of 0 indicates that a call cannot throw at all.
!    a REGION  of -1 indicates that it cannot throw, nor will it execute
!    a non-local goto.
!      REG_EH_RETHROW is used to indicate that a call is actually a
!    call to rethrow, and specifies the rethrow symbol for the region 
!    the rethrow is targetting.  This provides a way to generate the 
!    non standard flow edges required for a rethrow.
!      REG_SAVE_NOTE is used by haifa-sched to save NOTE_INSN notes 
!    across scheduling.  */
  
  #define REG_NOTES(INSN)	XEXP(INSN, 6)
  
! #define ADDR_DIFF_VEC_FLAGS(RTX) X0ADVFLAGS(RTX, 4)
  
! #define CSELIB_VAL_PTR(RTX) X0CSELIB(RTX, 0)
  
! /* Don't forget to change reg_note_name in rtl.c.  */
! enum reg_note { REG_DEAD = 1, REG_INC = 2, REG_EQUIV = 3, REG_WAS_0 = 4,
! 		REG_EQUAL = 5, REG_RETVAL = 6, REG_LIBCALL = 7,
! 		REG_NONNEG = 8, REG_NO_CONFLICT = 9, REG_UNUSED = 10,
! 		REG_CC_SETTER = 11, REG_CC_USER = 12, REG_LABEL = 13,
! 		REG_DEP_ANTI = 14, REG_DEP_OUTPUT = 15, REG_BR_PROB = 16,
! 		REG_EXEC_COUNT = 17, REG_NOALIAS = 18, REG_SAVE_AREA = 19,
! 		REG_BR_PRED = 20, REG_EH_CONTEXT = 21,
! 		REG_FRAME_RELATED_EXPR = 22, REG_EH_REGION = 23,
! 		REG_EH_RETHROW = 24, REG_SAVE_NOTE = 25 };
  /* The base value for branch probability notes.  */
  #define REG_BR_PROB_BASE  10000
  
--- 398,538 ----
     clear, the insn should be executed only if the branch is not taken.  */
  #define INSN_FROM_TARGET_P(INSN) ((INSN)->in_struct)
  
+ #define ADDR_DIFF_VEC_FLAGS(RTX) X0ADVFLAGS(RTX, 4)
+ 
+ #define CSELIB_VAL_PTR(RTX) X0CSELIB(RTX, 0)
+ 
  /* Holds a list of notes on what this insn does to various REGs.
!    It is a chain of EXPR_LIST rtx's, where the second operand is the
!    chain pointer and the first operand is the REG being described.
     The mode field of the EXPR_LIST contains not a real machine mode
!    but a value from enum reg_note.  */
  
  #define REG_NOTES(INSN)	XEXP(INSN, 6)
  
! /* Don't forget to change reg_note_name in rtl.c.  */
! enum reg_note
! {
!   /* The value in REG dies in this insn (i.e., it is not needed past
!      this insn).  If REG is set in this insn, the REG_DEAD note may,
!      but need not, be omitted.  */
!   REG_DEAD = 1,
  
!   /* The REG is autoincremented or autodecremented.  */
!   REG_INC,
  
!   /* Describes the insn as a whole; it says that the insn sets a register
!      to a constant value or to be equivalent to a memory address.  If the
!      register is spilled to the stack then the constant value should be
!      substituted for it.  The contents of the REG_EQUIV is the constant
!      value or memory address, which may be different from the source of
!      the SET although it has the same value.  A REG_EQUIV note may also
!      appear on an insn which copies a register parameter to a pseudo-register,
!      if there is a memory address which could be used to hold that
!      pseudo-register throughout the function.  */
!    REG_EQUIV,
! 
!   /* Like REG_EQUIV except that the destination is only momentarily equal
!      to the specified rtx.  Therefore, it cannot be used for substitution;
!      but it can be used for cse.  */
!   REG_EQUAL,
! 
!   /* The register set in this insn held 0 before the insn.  The contents of
!      the note is the insn that stored the 0.  If that insn is deleted or
!      patched to a NOTE, the REG_WAS_0 is inoperative.  The REG_WAS_0 note
!      is actually an INSN_LIST, not an EXPR_LIST.  */
!   REG_WAS_0,
! 
!   /* This insn copies the return-value of a library call out of the hard reg
!      for return values.  This note is actually an INSN_LIST and it points to
!      the first insn involved in setting up arguments for the call.  flow.c
!      uses this to delete the entire library call when its result is dead.  */
!   REG_RETVAL,
! 
!   /* The inverse of REG_RETVAL: it goes on the first insn of the library call
!      and points at the one that has the REG_RETVAL.  */
!   REG_LIBCALL,
! 
!   /* The register is always nonnegative during the containing loop.  This is
!      used in branches so that decrement and branch instructions terminating
!      on zero can be matched.  There must be an insn pattern in the md file
!      named `decrement_and_branch_until_zero' or else this will never be added
!      to any instructions.  */
!   REG_NONNEG,
! 
!   /* There is no conflict *after this insn* between the register in the note
!      and the destination of this insn.  */
!   REG_NO_CONFLICT,
! 
!   /* Identifies a register set in this insn and never used.  */
!   REG_UNUSED,
! 
!   /* REG_CC_SETTER and REG_CC_USER link a pair of insns that set and use CC0,
!      respectively.  Normally, these are required to be consecutive insns, but
!      we permit putting a cc0-setting insn in the delay slot of a branch as
!      long as only one copy of the insn exists.  In that case, these notes
!      point from one to the other to allow code generation to determine what
!      any require information and to properly update CC_STATUS.  */
!   REG_CC_SETTER, REG_CC_USER,
! 
!   /* Points to a CODE_LABEL.  Used by non-JUMP_INSNs to say that the
!      CODE_LABEL contained in the REG_LABEL note is used by the insn.  */
!   REG_LABEL,
! 
!   /* REG_DEP_ANTI and REG_DEP_OUTPUT are used in LOG_LINKS to represent
!      write-after-read and write-after-write dependencies respectively.
!      Data dependencies, which are the only type of LOG_LINK created by
!      flow, are represented by a 0 reg note kind.  */
!   REG_DEP_ANTI, REG_DEP_OUTPUT,
! 
!   /* REG_BR_PROB is attached to JUMP_INSNs and CALL_INSNs when the flag
!      -fbranch-probabilities is given.  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,
! 
!   /* REG_EXEC_COUNT is attached to the first insn of each basic block, and
!      the first insn after each CALL_INSN.  It indicates how many times this
!      block was executed.  */
!   REG_EXEC_COUNT,
! 
!   /* Attached to a call insn; indicates that the call is malloc-like and
!      that the pointer returned cannot alias anything else.  */
!   REG_NOALIAS,
! 
!   /* Used to optimize rtl generated by dynamic stack allocations for targets
!      where SETJMP_VIA_SAVE_AREA is true.  */
!   REG_SAVE_AREA,
! 
!   /* Attached to JUMP_INSNs only, it holds the branch prediction flags
!      computed by get_jump_flags() after dbr scheduling is complete.  */
!   REG_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_FRAME_RELATED_EXPR,
! 
!   /* 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_EH_CONTEXT,
! 
!   /* Indicates what exception region an INSN belongs in.  This is used to
!      indicate what region to which a call may throw.  REGION 0 indicates
!      that a call cannot throw at all.  REGION -1 indicates that it cannot
!      throw, nor will it execute a non-local goto.  */
!   REG_EH_REGION,
! 
!   /* Indicates that a call is actually a call to rethrow, and specifies the
!      rethrow symbol for the region the rethrow is targetting.  This provides
!      a way to generate the non standard flow edges required for a rethrow.  */
!   REG_EH_RETHROW,
! 
!   /* Used by haifa-sched to save NOTE_INSN notes across scheduling.  */
!   REG_SAVE_NOTE
! };
! 
  /* The base value for branch probability notes.  */
  #define REG_BR_PROB_BASE  10000
  
*************** extern const char * const note_insn_name
*** 667,673 ****
  /* 1 if the REG contained in SUBREG_REG is already known to be
     sign- or zero-extended from the mode of the SUBREG to the mode of
     the reg.  SUBREG_PROMOTED_UNSIGNED_P gives the signedness of the
!    extension.  
  
     When used as a LHS, is means that this extension must be done
     when assigning to SUBREG_REG.  */
--- 707,713 ----
  /* 1 if the REG contained in SUBREG_REG is already known to be
     sign- or zero-extended from the mode of the SUBREG to the mode of
     the reg.  SUBREG_PROMOTED_UNSIGNED_P gives the signedness of the
!    extension.
  
     When used as a LHS, is means that this extension must be done
     when assigning to SUBREG_REG.  */
*************** extern rtx const_true_rtx;
*** 1211,1217 ****
  
  extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
  
! /* Returns a constant 0 rtx in mode MODE.  Integer modes are treated the 
     same as VOIDmode.  */
  
  #define CONST0_RTX(MODE) (const_tiny_rtx[0][(int) (MODE)])
--- 1251,1257 ----
  
  extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
  
! /* Returns a constant 0 rtx in mode MODE.  Integer modes are treated the
     same as VOIDmode.  */
  
  #define CONST0_RTX(MODE) (const_tiny_rtx[0][(int) (MODE)])
*************** extern rtx gen_rtx_MEM PARAMS ((enum mac
*** 1351,1357 ****
  /* This points to the Canonical Frame Address of the function.  This
     should corrospond to the CFA produced by INCOMING_FRAME_SP_OFFSET,
     but is calculated relative to the arg pointer for simplicity; the
!    frame pointer nor stack pointer are necessarily fixed relative to 
     the CFA until after reload.  */
  
  #define virtual_cfa_rtx			(global_rtl[GR_VIRTUAL_CFA])
--- 1391,1397 ----
  /* This points to the Canonical Frame Address of the function.  This
     should corrospond to the CFA produced by INCOMING_FRAME_SP_OFFSET,
     but is calculated relative to the arg pointer for simplicity; the
!    frame pointer nor stack pointer are necessarily fixed relative to
     the CFA until after reload.  */
  
  #define virtual_cfa_rtx			(global_rtl[GR_VIRTUAL_CFA])

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]