public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Accumulated cleanups
@ 2004-07-22  7:30 Steven Bosscher
  2004-07-26 22:53 ` Ping: " Steven Bosscher
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Steven Bosscher @ 2004-07-22  7:30 UTC (permalink / raw)
  To: gcc-patches

Hi,

These are various cleanups for the expand phase of the compiler.
Bootstrapped and tested on i686 and x86_64 (the latter without
java because that's broken atm).  OK?

Gr.
Steven

	* cfgexpand.c (tree_expand_cfg): Fix comment.

	* calls.c (expand_call): Ignore rtx_equal_function_value_matters.
	* function.c (purge_single_hard_subreg_set, purge_hard_subreg_sets):
	Remove.
	(prepare_function_start): Don't set rtx_equal_function_value_matters.
	* integrate.c (copy_rtx_and_substitute): Don't test for it.
	* passes.c (rest_of_compilation): Don't call purge_hard_subreg_sets.
	Don't set rtx_equal_function_value_matters.  Don't register RTL hooks
	here again.  Update leading comment.
	* rtl.c (rtx_equal_function_value_matters): Remove.
	(rtx_equal_p): Don't test for it.
	* simplify-rtx.c (simplify_binary_operation, simplify_subreg):
	Likewise.

	* rtl.h (enum insn_note): Remove NOTE_INSN_LOOP_END_TOP_COND.
	* rtl.c (note_insn_name): Likewise.
	* emit-rtl.c (remove_unnecessary_notes): Don't handle it.
	* final.c (final_scan_insn): Likewise.

	* except.c (finish_eh_generation): Don't call cfg_cleanup from here.
	* passes.c (rest_of_handle_eh): Do it here.

	* stmt.c (struct nesting): Remove struct nesting block member.
	(struct stmt_status): Remove x_block_start_count field.
	(current_block_start_count): Remove.

Index: calls.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/calls.c,v
retrieving revision 1.356
diff -c -3 -p -r1.356 calls.c
*** calls.c	21 Jul 2004 19:23:01 -0000	1.356
--- calls.c	21 Jul 2004 20:24:50 -0000
*************** expand_call (tree exp, rtx target, int i
*** 2226,2242 ****
    /* Tail calls can make things harder to debug, and we've traditionally
       pushed these optimizations into -O2.  Don't try if we're already
       expanding a call, as that means we're an argument.  Don't try if
!      there's cleanups, as we know there's code to follow the call.
! 
!      If rtx_equal_function_value_matters is false, that means we've
!      finished with regular parsing.  Which means that some of the
!      machinery we use to generate tail-calls is no longer in place.
!      This is most often true of sjlj-exceptions, which we couldn't
!      tail-call to anyway.  */
  
    if (currently_expanding_call++ != 0
        || !flag_optimize_sibling_calls
-       || !rtx_equal_function_value_matters
        || args_size.var
        || lookup_stmt_eh_region (exp) >= 0)
      try_tail_call = 0;
--- 2226,2235 ----
    /* Tail calls can make things harder to debug, and we've traditionally
       pushed these optimizations into -O2.  Don't try if we're already
       expanding a call, as that means we're an argument.  Don't try if
!      there's cleanups, as we know there's code to follow the call.  */
  
    if (currently_expanding_call++ != 0
        || !flag_optimize_sibling_calls
        || args_size.var
        || lookup_stmt_eh_region (exp) >= 0)
      try_tail_call = 0;
Index: cfgexpand.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgexpand.c,v
retrieving revision 2.12
diff -c -3 -p -r2.12 cfgexpand.c
*** cfgexpand.c	21 Jul 2004 19:23:02 -0000	2.12
--- cfgexpand.c	21 Jul 2004 20:24:50 -0000
*************** tree_expand_cfg (void)
*** 418,424 ****
        && DECL_FILE_SCOPE_P (current_function_decl))
      expand_main_function ();
  
!   /* Write the flowgraph to a dot file.  */
    rtl_register_cfg_hooks ();
  
    init_block = construct_init_block ();
--- 418,424 ----
        && DECL_FILE_SCOPE_P (current_function_decl))
      expand_main_function ();
  
!   /* Register rtl specific functions for cfg.  */
    rtl_register_cfg_hooks ();
  
    init_block = construct_init_block ();
Index: emit-rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v
retrieving revision 1.405
diff -c -3 -p -r1.405 emit-rtl.c
*** emit-rtl.c	17 Jul 2004 14:22:42 -0000	1.405
--- emit-rtl.c	21 Jul 2004 20:24:50 -0000
*************** remove_unnecessary_notes (void)
*** 3836,3842 ****
        switch (NOTE_LINE_NUMBER (insn))
  	{
  	case NOTE_INSN_DELETED:
- 	case NOTE_INSN_LOOP_END_TOP_COND:
  	  remove_insn (insn);
  	  break;
  
--- 3836,3841 ----
Index: except.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/except.c,v
retrieving revision 1.280
diff -c -3 -p -r1.280 except.c
*** except.c	15 Jul 2004 01:07:48 -0000	1.280
--- except.c	21 Jul 2004 20:24:51 -0000
*************** finish_eh_generation (void)
*** 2179,2186 ****
       connect many of the handlers, and then type information will not
       be effective.  Still, this is a win over previous implementations.  */
  
-   cleanup_cfg (CLEANUP_PRE_LOOP | CLEANUP_NO_INSN_DEL);
- 
    /* These registers are used by the landing pads.  Make sure they
       have been generated.  */
    get_exception_pointer (cfun);
--- 2179,2184 ----
*************** finish_eh_generation (void)
*** 2219,2225 ****
        if (eh)
  	rtl_make_eh_edge (NULL, bb, BB_END (bb));
      }
-   cleanup_cfg (CLEANUP_PRE_LOOP | CLEANUP_NO_INSN_DEL);
  }
  
  static hashval_t
--- 2217,2222 ----
Index: final.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/final.c,v
retrieving revision 1.324
diff -c -3 -p -r1.324 final.c
*** final.c	20 Jul 2004 23:02:33 -0000	1.324
--- final.c	21 Jul 2004 20:24:51 -0000
*************** final_scan_insn (rtx insn, FILE *file, i
*** 1699,1705 ****
  	case NOTE_INSN_DELETED:
  	case NOTE_INSN_LOOP_BEG:
  	case NOTE_INSN_LOOP_END:
- 	case NOTE_INSN_LOOP_END_TOP_COND:
  	case NOTE_INSN_LOOP_CONT:
  	case NOTE_INSN_LOOP_VTOP:
  	case NOTE_INSN_FUNCTION_END:
--- 1699,1704 ----
Index: function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.558
diff -c -3 -p -r1.558 function.c
*** function.c	16 Jul 2004 20:34:12 -0000	1.558
--- function.c	21 Jul 2004 20:24:51 -0000
*************** static int contains (rtx, varray_type);
*** 216,222 ****
  #ifdef HAVE_return
  static void emit_return_into_block (basic_block, rtx);
  #endif
- static void purge_single_hard_subreg_set (rtx);
  #if defined(HAVE_epilogue) && defined(INCOMING_RETURN_ADDR_RTX)
  static rtx keep_stack_depressed (rtx);
  #endif
--- 216,221 ----
*************** pop_function_context_from (tree context 
*** 303,309 ****
    lang_hooks.function.leave_nested (p);
  
    /* Reset variables that have known state during rtx generation.  */
-   rtx_equal_function_value_matters = 1;
    virtuals_instantiated = 0;
    generating_concat_p = 1;
  }
--- 302,307 ----
*************** static int cfa_offset;
*** 1258,1331 ****
  #endif
  
  
- /* Convert a SET of a hard subreg to a set of the appropriate hard
-    register.  A subroutine of purge_hard_subreg_sets.  */
- 
- static void
- purge_single_hard_subreg_set (rtx pattern)
- {
-   rtx reg = SET_DEST (pattern);
-   enum machine_mode mode = GET_MODE (SET_DEST (pattern));
-   int offset = 0;
- 
-   if (GET_CODE (reg) == SUBREG && REG_P (SUBREG_REG (reg))
-       && REGNO (SUBREG_REG (reg)) < FIRST_PSEUDO_REGISTER)
-     {
-       offset = subreg_regno_offset (REGNO (SUBREG_REG (reg)),
- 				    GET_MODE (SUBREG_REG (reg)),
- 				    SUBREG_BYTE (reg),
- 				    GET_MODE (reg));
-       reg = SUBREG_REG (reg);
-     }
- 
- 
-   if (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER)
-     {
-       reg = gen_rtx_REG (mode, REGNO (reg) + offset);
-       SET_DEST (pattern) = reg;
-     }
- }
- 
- /* Eliminate all occurrences of SETs of hard subregs from INSNS.  The
-    only such SETs that we expect to see are those left in because
-    integrate can't handle sets of parts of a return value register.
- 
-    We don't use alter_subreg because we only want to eliminate subregs
-    of hard registers.  */
- 
- void
- purge_hard_subreg_sets (rtx insn)
- {
-   for (; insn; insn = NEXT_INSN (insn))
-     {
-       if (INSN_P (insn))
- 	{
- 	  rtx pattern = PATTERN (insn);
- 	  switch (GET_CODE (pattern))
- 	    {
- 	    case SET:
- 	      if (GET_CODE (SET_DEST (pattern)) == SUBREG)
- 		purge_single_hard_subreg_set (pattern);
- 	      break;
- 	    case PARALLEL:
- 	      {
- 		int j;
- 		for (j = XVECLEN (pattern, 0) - 1; j >= 0; j--)
- 		  {
- 		    rtx inner_pattern = XVECEXP (pattern, 0, j);
- 		    if (GET_CODE (inner_pattern) == SET
- 			&& GET_CODE (SET_DEST (inner_pattern)) == SUBREG)
- 		      purge_single_hard_subreg_set (inner_pattern);
- 		  }
- 	      }
- 	      break;
- 	    default:
- 	      break;
- 	    }
- 	}
-     }
- }
- 
  /* Pass through the INSNS of function FNDECL and convert virtual register
     references to hard register references.  */
  
--- 1256,1261 ----
*************** prepare_function_start (tree fndecl)
*** 3949,3958 ****
    /* We haven't done register allocation yet.  */
    reg_renumber = 0;
  
-   /* Indicate that we need to distinguish between the return value of the
-      present function and the return value of a function being called.  */
-   rtx_equal_function_value_matters = 1;
- 
    /* Indicate that we have not instantiated virtual registers yet.  */
    virtuals_instantiated = 0;
  
--- 3879,3884 ----
Index: integrate.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/integrate.c,v
retrieving revision 1.266
diff -c -3 -p -r1.266 integrate.c
*** integrate.c	9 Jul 2004 03:29:33 -0000	1.266
--- integrate.c	21 Jul 2004 20:24:52 -0000
*************** copy_rtx_and_substitute (rtx orig, struc
*** 324,342 ****
  	      emit_insn_after (seq, map->insns_at_start);
  	      return temp;
  	    }
- 	  else if (REG_FUNCTION_VALUE_P (orig))
- 	    {
- 	      if (rtx_equal_function_value_matters)
- 		/* This is an ignored return value.  We must not
- 		   leave it in with REG_FUNCTION_VALUE_P set, since
- 		   that would confuse subsequent inlining of the
- 		   current function into a later function.  */
- 		return gen_rtx_REG (GET_MODE (orig), regno);
- 	      else
- 		/* Must be unrolling loops or replicating code if we
- 		   reach here, so return the register unchanged.  */
- 		return orig;
- 	    }
  	  else
  	    return orig;
  
--- 324,329 ----
Index: passes.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/passes.c,v
retrieving revision 2.33
diff -c -3 -p -r2.33 passes.c
*** passes.c	21 Jul 2004 18:57:09 -0000	2.33
--- passes.c	21 Jul 2004 20:24:52 -0000
*************** rest_of_handle_eh (void)
*** 1482,1489 ****
--- 1482,1493 ----
        timevar_push (TV_JUMP);
        open_dump_file (DFI_eh, current_function_decl);
  
+       cleanup_cfg (CLEANUP_PRE_LOOP | CLEANUP_NO_INSN_DEL);
+ 
        finish_eh_generation ();
  
+       cleanup_cfg (CLEANUP_PRE_LOOP | CLEANUP_NO_INSN_DEL);
+ 
        close_dump_file (DFI_eh, print_rtl, get_insns ());
        timevar_pop (TV_JUMP);
      }
*************** rest_of_clean_state (void)
*** 1699,1709 ****
  }
  
  
! /* This is called from finish_function (within langhooks.parse_file)
!    after each top-level definition is parsed.
!    It is supposed to compile that function or variable
!    and output the assembler code for it.
!    After we return, the tree storage is freed.  */
  
  void
  rest_of_compilation (void)
--- 1703,1716 ----
  }
  
  
! /* This function is called from the pass manager in tree-optimize.c
!    after all tree passes have finished for a single function, and we
!    have expanded the function body from trees to RTL.
!    Once we are here, we have decided that we're supposed to output
!    that function, ie. that we should write assembler code for it.
! 
!    We run a series of low-level passes here on the function's RTL
!    representation.  Each pass is called via a rest_of_* function.  */
  
  void
  rest_of_compilation (void)
*************** rest_of_compilation (void)
*** 1712,1722 ****
       know we want to output it.  */
    DECL_DEFER_OUTPUT (current_function_decl) = 0;
  
!   /* Register rtl specific functions for cfg.  */
!   rtl_register_cfg_hooks ();
! 
!   /* Now that we're out of the frontend, we shouldn't have any more
!      CONCATs anywhere.  */
    generating_concat_p = 0;
  
    /* When processing delayed functions, prepare_function_start () won't
--- 1719,1726 ----
       know we want to output it.  */
    DECL_DEFER_OUTPUT (current_function_decl) = 0;
  
!   /* Now that we're done expanding trees to RTL, we shouldn't have any
!      more CONCATs anywhere.  */
    generating_concat_p = 0;
  
    /* When processing delayed functions, prepare_function_start () won't
*************** rest_of_compilation (void)
*** 1761,1778 ****
  
    TREE_ASM_WRITTEN (current_function_decl) = 1;
  
-   /* Now that integrate will no longer see our rtl, we need not
-      distinguish between the return value of this function and the
-      return value of called functions.  Also, we can remove all SETs
-      of subregs of hard registers; they are only here because of
-      integrate.  Also, we can now initialize pseudos intended to
-      carry magic hard reg data throughout the function.
- 
-      FIXME: All this looks thoroughly obsolete... maybe we can
-      get rid of both these lines unconditionally?  */
-   rtx_equal_function_value_matters = 0;
-   purge_hard_subreg_sets (get_insns ());
- 
    /* Early return if there were errors.  We can run afoul of our
       consistency checks, and there's not really much point in fixing them.  */
    if (rtl_dump_and_exit || flag_syntax_only || errorcount || sorrycount)
--- 1765,1770 ----
Index: rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/rtl.c,v
retrieving revision 1.141
diff -c -3 -p -r1.141 rtl.c
*** rtl.c	21 Jul 2004 18:57:09 -0000	1.141
--- rtl.c	21 Jul 2004 20:24:52 -0000
*************** const char * const note_insn_name[NOTE_I
*** 116,122 ****
    "NOTE_INSN_BLOCK_BEG", "NOTE_INSN_BLOCK_END",
    "NOTE_INSN_LOOP_BEG", "NOTE_INSN_LOOP_END",
    "NOTE_INSN_LOOP_CONT", "NOTE_INSN_LOOP_VTOP",
!   "NOTE_INSN_LOOP_END_TOP_COND", "NOTE_INSN_FUNCTION_END",
    "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",
--- 116,122 ----
    "NOTE_INSN_BLOCK_BEG", "NOTE_INSN_BLOCK_END",
    "NOTE_INSN_LOOP_BEG", "NOTE_INSN_LOOP_END",
    "NOTE_INSN_LOOP_CONT", "NOTE_INSN_LOOP_VTOP",
!   "NOTE_INSN_FUNCTION_END",
    "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",
*************** shallow_copy_rtx_stat (rtx orig MEM_STAT
*** 317,325 ****
    return copy;
  }
  
- /* This is 1 until after the rtl generation pass.  */
- int rtx_equal_function_value_matters;
- 
  /* Nonzero when we are generating CONCATs.  */
  int generating_concat_p;
  
--- 317,322 ----
*************** rtx_equal_p (rtx x, rtx y)
*** 354,367 ****
    switch (code)
      {
      case REG:
!       /* Until rtl generation is complete, don't consider a reference
! 	 to the return register of the current function the same as
! 	 the return from a called function.  This eases the job of
! 	 function integration.  Once the distinction is no longer
! 	 needed, they can be considered equivalent.  */
!       return (REGNO (x) == REGNO (y)
! 	      && (! rtx_equal_function_value_matters
! 		  || REG_FUNCTION_VALUE_P (x) == REG_FUNCTION_VALUE_P (y)));
  
      case LABEL_REF:
        return XEXP (x, 0) == XEXP (y, 0);
--- 351,357 ----
    switch (code)
      {
      case REG:
!       return (REGNO (x) == REGNO (y));
  
      case LABEL_REF:
        return XEXP (x, 0) == XEXP (y, 0);
Index: rtl.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/rtl.h,v
retrieving revision 1.493
diff -c -3 -p -r1.493 rtl.h
*** rtl.h	21 Jul 2004 18:57:09 -0000	1.493
--- rtl.h	21 Jul 2004 20:24:52 -0000
*************** enum insn_note
*** 985,996 ****
    /* Generated at the start of a duplicated exit test.  */
    NOTE_INSN_LOOP_VTOP,
  
-   /* Generated at the end of a conditional at the top of the loop.
-      This is used to perform a lame form of loop rotation in lieu
-      of actually understanding the loop structure.  The note is
-      discarded after rotation is complete.  */
-   NOTE_INSN_LOOP_END_TOP_COND,
- 
    /* 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
--- 985,990 ----
*************** do {						\
*** 1546,1558 ****
  #define USE_STORE_PRE_DECREMENT(MODE)   HAVE_PRE_DECREMENT
  #endif
  
- /* Nonzero if we need to distinguish between the return value of this function
-    and the return value of a function called by this function.  This helps
-    integrate.c.
-    This is 1 until after the rtl generation pass.
-    ??? It appears that this is 1 only when expanding trees to RTL.  */
- extern int rtx_equal_function_value_matters;
- 
  /* Nonzero when we are generating CONCATs.  */
  extern int generating_concat_p;
  
--- 1540,1545 ----
*************** extern int prologue_epilogue_contains (r
*** 2250,2256 ****
  extern int sibcall_epilogue_contains (rtx);
  extern void mark_temp_addr_taken (rtx);
  extern void update_temp_slot_address (rtx, rtx);
- extern void purge_hard_subreg_sets (rtx);
  
  /* In stmt.c */
  extern void set_file_and_line_for_stmt (location_t);
--- 2237,2242 ----
Index: simplify-rtx.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/simplify-rtx.c,v
retrieving revision 1.199
diff -c -3 -p -r1.199 simplify-rtx.c
*** simplify-rtx.c	14 Jul 2004 07:30:17 -0000	1.199
--- simplify-rtx.c	21 Jul 2004 20:24:53 -0000
*************** simplify_binary_operation (enum rtx_code
*** 1791,1798 ****
  		 uppermost bit is set, then this isn't a power of two due
  		 to implicit sign extension.  */
  	      && (width <= HOST_BITS_PER_WIDE_INT
! 		  || val != HOST_BITS_PER_WIDE_INT - 1)
! 	      && ! rtx_equal_function_value_matters)
  	    return simplify_gen_binary (ASHIFT, mode, op0, GEN_INT (val));
  
  	  /* x*2 is x+x and x*(-1) is -x */
--- 1791,1797 ----
  		 uppermost bit is set, then this isn't a power of two due
  		 to implicit sign extension.  */
  	      && (width <= HOST_BITS_PER_WIDE_INT
! 		  || val != HOST_BITS_PER_WIDE_INT - 1))
  	    return simplify_gen_binary (ASHIFT, mode, op0, GEN_INT (val));
  
  	  /* x*2 is x+x and x*(-1) is -x */
*************** simplify_subreg (enum machine_mode outer
*** 3669,3676 ****
       frame, or argument pointer, leave this as a SUBREG.  */
  
    if (REG_P (op)
-       && (! REG_FUNCTION_VALUE_P (op)
- 	  || ! rtx_equal_function_value_matters)
        && REGNO (op) < FIRST_PSEUDO_REGISTER
  #ifdef CANNOT_CHANGE_MODE_CLASS
        && ! (REG_CANNOT_CHANGE_MODE_P (REGNO (op), innermode, outermode)
--- 3668,3673 ----
Index: stmt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/stmt.c,v
retrieving revision 1.381
diff -c -3 -p -r1.381 stmt.c
*** stmt.c	21 Jul 2004 19:23:02 -0000	1.381
--- stmt.c	21 Jul 2004 20:24:53 -0000
*************** struct nesting GTY(())
*** 162,184 ****
  	     This may be the end of the if or the next else/elseif.  */
  	  rtx next_label;
  	} GTY ((tag ("COND_NESTING"))) cond;
-       /* For variable binding contours.  */
-       struct nesting_block
- 	{
- 	  /* Sequence number of this binding contour within the function,
- 	     in order of entry.  */
- 	  int block_start_count;
- 	  /* The NOTE that starts this contour.
- 	     Used by expand_goto to check whether the destination
- 	     is within each contour or not.  */
- 	  rtx first_insn;
- 	  /* The saved target_temp_slot_level from our outer block.
- 	     We may reset target_temp_slot_level to be the level of
- 	     this block, if that is done, target_temp_slot_level
- 	     reverts to the saved target_temp_slot_level at the very
- 	     end of the block.  */
- 	  int block_target_temp_slot_level;
- 	} GTY ((tag ("BLOCK_NESTING"))) block;
        /* For switch (C) or case (Pascal) statements.  */
        struct nesting_case
  	{
--- 162,167 ----
*************** struct stmt_status GTY(())
*** 236,244 ****
    /* Number of entries on nesting_stack now.  */
    int x_nesting_depth;
  
-   /* Number of binding contours started so far in this function.  */
-   int x_block_start_count;
- 
    /* Location of last line-number note, whether we actually
       emitted it or not.  */
    location_t x_emit_locus;
--- 219,224 ----
*************** struct stmt_status GTY(())
*** 248,254 ****
  #define case_stack (cfun->stmt->x_case_stack)
  #define nesting_stack (cfun->stmt->x_nesting_stack)
  #define nesting_depth (cfun->stmt->x_nesting_depth)
- #define current_block_start_count (cfun->stmt->x_block_start_count)
  #define emit_locus (cfun->stmt->x_emit_locus)
  
  static int n_occurrences (int, const char *);
--- 228,233 ----

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Ping: Accumulated cleanups
  2004-07-22  7:30 Accumulated cleanups Steven Bosscher
@ 2004-07-26 22:53 ` Steven Bosscher
  2004-07-28  3:17 ` Jeffrey A Law
  2004-07-28 14:47 ` Andreas Schwab
  2 siblings, 0 replies; 8+ messages in thread
From: Steven Bosscher @ 2004-07-26 22:53 UTC (permalink / raw)
  To: gcc-patches

On Wednesday 21 July 2004 22:34, Steven Bosscher wrote:
Hi,

> 	* cfgexpand.c (tree_expand_cfg): Fix comment.
>
> 	* calls.c (expand_call): Ignore rtx_equal_function_value_matters.
> 	* function.c (purge_single_hard_subreg_set, purge_hard_subreg_sets):
> 	Remove.
> 	(prepare_function_start): Don't set rtx_equal_function_value_matters.
> 	* integrate.c (copy_rtx_and_substitute): Don't test for it.
> 	* passes.c (rest_of_compilation): Don't call purge_hard_subreg_sets.
> 	Don't set rtx_equal_function_value_matters.  Don't register RTL hooks
> 	here again.  Update leading comment.
> 	* rtl.c (rtx_equal_function_value_matters): Remove.
> 	(rtx_equal_p): Don't test for it.
> 	* simplify-rtx.c (simplify_binary_operation, simplify_subreg):
> 	Likewise.
>
> 	* rtl.h (enum insn_note): Remove NOTE_INSN_LOOP_END_TOP_COND.
> 	* rtl.c (note_insn_name): Likewise.
> 	* emit-rtl.c (remove_unnecessary_notes): Don't handle it.
> 	* final.c (final_scan_insn): Likewise.
>
> 	* except.c (finish_eh_generation): Don't call cfg_cleanup from here.
> 	* passes.c (rest_of_handle_eh): Do it here.
>
> 	* stmt.c (struct nesting): Remove struct nesting block member.
> 	(struct stmt_status): Remove x_block_start_count field.
> 	(current_block_start_count): Remove.

Ping!

Gr.
Steven


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Accumulated cleanups
  2004-07-22  7:30 Accumulated cleanups Steven Bosscher
  2004-07-26 22:53 ` Ping: " Steven Bosscher
@ 2004-07-28  3:17 ` Jeffrey A Law
  2004-07-28 14:47 ` Andreas Schwab
  2 siblings, 0 replies; 8+ messages in thread
From: Jeffrey A Law @ 2004-07-28  3:17 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: gcc-patches

On Wed, 2004-07-21 at 14:34, Steven Bosscher wrote:
> Hi,
> 
> These are various cleanups for the expand phase of the compiler.
> Bootstrapped and tested on i686 and x86_64 (the latter without
> java because that's broken atm).  OK?
> 
> Gr.
> Steven
> 
> 	* cfgexpand.c (tree_expand_cfg): Fix comment.
> 
> 	* calls.c (expand_call): Ignore rtx_equal_function_value_matters.
> 	* function.c (purge_single_hard_subreg_set, purge_hard_subreg_sets):
> 	Remove.
> 	(prepare_function_start): Don't set rtx_equal_function_value_matters.
> 	* integrate.c (copy_rtx_and_substitute): Don't test for it.
> 	* passes.c (rest_of_compilation): Don't call purge_hard_subreg_sets.
> 	Don't set rtx_equal_function_value_matters.  Don't register RTL hooks
> 	here again.  Update leading comment.
> 	* rtl.c (rtx_equal_function_value_matters): Remove.
> 	(rtx_equal_p): Don't test for it.
> 	* simplify-rtx.c (simplify_binary_operation, simplify_subreg):
> 	Likewise.
> 
> 	* rtl.h (enum insn_note): Remove NOTE_INSN_LOOP_END_TOP_COND.
> 	* rtl.c (note_insn_name): Likewise.
> 	* emit-rtl.c (remove_unnecessary_notes): Don't handle it.
> 	* final.c (final_scan_insn): Likewise.
> 
> 	* except.c (finish_eh_generation): Don't call cfg_cleanup from here.
> 	* passes.c (rest_of_handle_eh): Do it here.
> 
> 	* stmt.c (struct nesting): Remove struct nesting block member.
> 	(struct stmt_status): Remove x_block_start_count field.
> 	(current_block_start_count): Remove.
Looks good.  Please install.

jeff


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Accumulated cleanups
  2004-07-22  7:30 Accumulated cleanups Steven Bosscher
  2004-07-26 22:53 ` Ping: " Steven Bosscher
  2004-07-28  3:17 ` Jeffrey A Law
@ 2004-07-28 14:47 ` Andreas Schwab
  2004-07-28 15:02   ` Steven Bosscher
  2 siblings, 1 reply; 8+ messages in thread
From: Andreas Schwab @ 2004-07-28 14:47 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: gcc-patches

Steven Bosscher <s.bosscher@student.tudelft.nl> writes:

> 	* rtl.c (rtx_equal_function_value_matters): Remove.

Ever heard of grep???

gcc -c   -O2 -g -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes  -fno-common   -DHAVE_CONFIG_H    -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I../../gcc/../libbanshee/libcompat -I../../gcc/../libbanshee -I../../gcc/../libbanshee/points-to  \
        ../../gcc/config/ia64/ia64.c -o ia64.o
../../gcc/config/ia64/ia64.c: In function `got_symbolic_operand':
../../gcc/config/ia64/ia64.c:492: error: `rtx_equal_function_value_matters' undeclared (first use in this function)
../../gcc/config/ia64/ia64.c:492: error: (Each undeclared identifier is reported only once
../../gcc/config/ia64/ia64.c:492: error: for each function it appears in.)
make[2]: *** [ia64.o] Error 1

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Accumulated cleanups
  2004-07-28 14:47 ` Andreas Schwab
@ 2004-07-28 15:02   ` Steven Bosscher
  2004-07-28 15:02     ` Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups) Steven Bosscher
  0 siblings, 1 reply; 8+ messages in thread
From: Steven Bosscher @ 2004-07-28 15:02 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: gcc-patches

On Wednesday 28 July 2004 09:58, Andreas Schwab wrote:
> Steven Bosscher <s.bosscher@student.tudelft.nl> writes:
> > 	* rtl.c (rtx_equal_function_value_matters): Remove.
>
> Ever heard of grep???

Have you ever heard of backends using flags for things they're not
supposed to?

-   /* Indicate that we need to distinguish between the return value of the
-      present function and the return value of a function being called.  */
-   rtx_equal_function_value_matters = 1;

I should have grep'ed, Alpha, SH and IA64 use it.  The Alpha ones are
easy to fix.  The other two backends, as usual, need special treatment.
I'll prepare a patch.

Gr.
Steven



> gcc -c   -O2 -g -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes
> -Wmissing-prototypes  -fno-common   -DHAVE_CONFIG_H    -I. -I. -I../../gcc
> -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include
> -I../../gcc/../libbanshee/libcompat -I../../gcc/../libbanshee
> -I../../gcc/../libbanshee/points-to  \ ../../gcc/config/ia64/ia64.c -o
> ia64.o
> ../../gcc/config/ia64/ia64.c: In function `got_symbolic_operand':
> ../../gcc/config/ia64/ia64.c:492: error: `rtx_equal_function_value_matters'
> undeclared (first use in this function) ../../gcc/config/ia64/ia64.c:492:
> error: (Each undeclared identifier is reported only once
> ../../gcc/config/ia64/ia64.c:492: error: for each function it appears in.)
> make[2]: *** [ia64.o] Error 1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups)
  2004-07-28 15:02   ` Steven Bosscher
@ 2004-07-28 15:02     ` Steven Bosscher
  2004-07-28 15:52       ` Andreas Schwab
  2004-07-29  8:16       ` Richard Henderson
  0 siblings, 2 replies; 8+ messages in thread
From: Steven Bosscher @ 2004-07-28 15:02 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: gcc-patches, rth

[-- Attachment #1: Type: text/plain, Size: 535 bytes --]

On Wednesday 28 July 2004 10:22, Steven Bosscher wrote:
> I'll prepare a patch.

Like so.  Can you give this a try please?

	* rtl.c (currently_expanding_to_rtl): New.
	* rtl.h (currently_expanding_to_rtl): Export it.
	* cfgexpand.c (tree_cfg_expand): Set/clear it at entry/exit.

	* config/alpha/alpha.c (alpha_expand_mov): Remove old RTL
	inliner hack.
	* config/sh/sh.c: Replace rtx_equal_function_value_matters
	with currently_expanding_to_rtl.
	* config/sh/sh.md: Likewise.
	* config/ia64/ia64.c (got_symbolic_operand): Likewise.

[-- Attachment #2: patch --]
[-- Type: text/x-diff, Size: 12171 bytes --]

	* rtl.c (currently_expanding_to_rtl): New.
	* rtl.h (currently_expanding_to_rtl): Export it.
	* cfgexpand.c (tree_cfg_expand): Set/clear it at entry/exit.

	* config/alpha/alpha.c (alpha_expand_mov): Remove old RTL
	inliner hack.
	* config/sh/sh.c: Replace rtx_equal_function_value_matters
	with currently_expanding_to_rtl.
	* config/sh/sh.md: Likewise.
	* config/ia64/ia64.c (got_symbolic_operand): Likewise.

Index: cfgexpand.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgexpand.c,v
retrieving revision 2.15
diff -c -3 -p -r2.15 cfgexpand.c
*** cfgexpand.c	27 Jul 2004 19:09:29 -0000	2.15
--- cfgexpand.c	28 Jul 2004 08:31:51 -0000
*************** tree_expand_cfg (void)
*** 433,438 ****
--- 433,441 ----
  	       IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl)));
      }
  
+   /* Some backends want to know that we are expanding to RTL.  */
+   currently_expanding_to_rtl = 1;
+ 
    /* Prepare the rtl middle end to start recording block changes.  */
    reset_block_changes ();
  
*************** tree_expand_cfg (void)
*** 459,464 ****
--- 462,470 ----
  
    construct_exit_block ();
  
+   /* We're done expanding trees to RTL.  */
+   currently_expanding_to_rtl = 0;
+ 
    /* Convert from NOTE_INSN_EH_REGION style notes, and do other
       sorts of eh initialization.  Delay this until after the
       initial rtl dump so that we can see the original nesting.  */
Index: rtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/rtl.c,v
retrieving revision 1.143
diff -c -3 -p -r1.143 rtl.c
*** rtl.c	27 Jul 2004 19:09:32 -0000	1.143
--- rtl.c	28 Jul 2004 08:31:51 -0000
*************** shallow_copy_rtx_stat (rtx orig MEM_STAT
*** 320,325 ****
--- 320,329 ----
  
  /* Nonzero when we are generating CONCATs.  */
  int generating_concat_p;
+ 
+ /* Nonzero when we are expanding trees to RTL.  */
+ int currently_expanding_to_rtl;
+ 
  
  /* Return 1 if X and Y are identical-looking rtx's.
     This is the Lisp function EQUAL for rtx arguments.  */
Index: rtl.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/rtl.h,v
retrieving revision 1.495
diff -c -3 -p -r1.495 rtl.h
*** rtl.h	27 Jul 2004 19:09:32 -0000	1.495
--- rtl.h	28 Jul 2004 08:31:51 -0000
*************** do {						\
*** 1543,1548 ****
--- 1543,1551 ----
  /* Nonzero when we are generating CONCATs.  */
  extern int generating_concat_p;
  
+ /* Nonzero when we are expanding trees to RTL.  */
+ extern int currently_expanding_to_rtl;
+ 
  /* Generally useful functions.  */
  
  /* In expmed.c */
Index: config/alpha/alpha.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.c,v
retrieving revision 1.380
diff -c -3 -p -r1.380 alpha.c
*** config/alpha/alpha.c	26 Jul 2004 07:07:48 -0000	1.380
--- config/alpha/alpha.c	28 Jul 2004 08:31:52 -0000
*************** alpha_expand_mov (enum machine_mode mode
*** 2796,2818 ****
      {
        rtx tmp;
  
-       /* With RTL inlining, at -O3, rtl is generated, stored, then actually
- 	 compiled at the end of compilation.  In the meantime, someone can
- 	 re-encode-section-info on some symbol changing it e.g. from global
- 	 to local-not-small.  If this happens, we'd have emitted a plain
- 	 load rather than a high+losum load and not recognize the insn.
- 
- 	 So if rtl inlining is in effect, we delay the global/not-global
- 	 decision until rest_of_compilation by wrapping it in an
- 	 UNSPEC_SYMBOL.  */
-       if (TARGET_EXPLICIT_RELOCS && flag_inline_functions
- 	  && rtx_equal_function_value_matters
- 	  && global_symbolic_operand (operands[1], mode))
- 	{
- 	  emit_insn (gen_movdi_er_maybe_g (operands[0], operands[1]));
- 	  return true;
- 	}
- 
        tmp = alpha_legitimize_address (operands[1], operands[0], mode);
        if (tmp)
  	{
--- 2796,2801 ----
Index: config/ia64/ia64.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.c,v
retrieving revision 1.311
diff -c -3 -p -r1.311 ia64.c
*** config/ia64/ia64.c	27 Jul 2004 21:41:20 -0000	1.311
--- config/ia64/ia64.c	28 Jul 2004 08:31:52 -0000
*************** got_symbolic_operand (rtx op, enum machi
*** 489,495 ****
        /* "Ok" while emitting rtl, since otherwise we won't be provided
  	 with the entire offset during emission, which makes it very
  	 hard to split the offset into high and low parts.  */
!       if (rtx_equal_function_value_matters)
  	return 1;
  
        /* Force the low 14 bits of the constant to zero so that we do not
--- 489,495 ----
        /* "Ok" while emitting rtl, since otherwise we won't be provided
  	 with the entire offset during emission, which makes it very
  	 hard to split the offset into high and low parts.  */
!       if (currently_expanding_to_rtl)
  	return 1;
  
        /* Force the low 14 bits of the constant to zero so that we do not
Index: config/sh/sh.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.c,v
retrieving revision 1.285
diff -c -3 -p -r1.285 sh.c
*** config/sh/sh.c	20 Jul 2004 07:27:15 -0000	1.285
--- config/sh/sh.c	28 Jul 2004 08:31:53 -0000
*************** shl_and_scr_length (rtx insn)
*** 2239,2247 ****
    return len + shift_insns[INTVAL (XEXP (op, 1))];
  }
  
- /* Generating rtl? */
- extern int rtx_equal_function_value_matters;
- 
  /* Generate rtl for instructions for which shl_and_kind advised a particular
     method of generating them, i.e. returned zero.  */
  
--- 2239,2244 ----
*************** gen_shl_and (rtx dest, rtx left_rtx, rtx
*** 2312,2318 ****
      case 2:
        /* Don't expand fine-grained when combining, because that will
           make the pattern fail.  */
!       if (rtx_equal_function_value_matters
  	  || reload_in_progress || reload_completed)
  	{
  	  rtx operands[3];
--- 2309,2315 ----
      case 2:
        /* Don't expand fine-grained when combining, because that will
           make the pattern fail.  */
!       if (currently_expanding_to_rtl
  	  || reload_in_progress || reload_completed)
  	{
  	  rtx operands[3];
*************** gen_shl_sext (rtx dest, rtx left_rtx, rt
*** 2509,2515 ****
  
  	/* Don't expand fine-grained when combining, because that will
  	   make the pattern fail.  */
! 	if (! rtx_equal_function_value_matters
  	    && ! reload_in_progress && ! reload_completed)
  	  {
  	    emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
--- 2506,2512 ----
  
  	/* Don't expand fine-grained when combining, because that will
  	   make the pattern fail.  */
! 	if (! currently_expanding_to_rtl
  	    && ! reload_in_progress && ! reload_completed)
  	  {
  	    emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
*************** gen_shl_sext (rtx dest, rtx left_rtx, rt
*** 2564,2570 ****
      case 5:
        {
  	int i = 16 - size;
! 	if (! rtx_equal_function_value_matters
  	    && ! reload_in_progress && ! reload_completed)
  	  emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
  	else
--- 2561,2567 ----
      case 5:
        {
  	int i = 16 - size;
! 	if (! currently_expanding_to_rtl
  	    && ! reload_in_progress && ! reload_completed)
  	  emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
  	else
*************** gen_shl_sext (rtx dest, rtx left_rtx, rt
*** 2583,2589 ****
      case 7:
        /* Don't expand fine-grained when combining, because that will
  	 make the pattern fail.  */
!       if (! rtx_equal_function_value_matters
  	  && ! reload_in_progress && ! reload_completed)
  	{
  	  emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
--- 2580,2586 ----
      case 7:
        /* Don't expand fine-grained when combining, because that will
  	 make the pattern fail.  */
!       if (! currently_expanding_to_rtl
  	  && ! reload_in_progress && ! reload_completed)
  	{
  	  emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
Index: config/sh/sh.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.md,v
retrieving revision 1.177
diff -c -3 -p -r1.177 sh.md
*** config/sh/sh.md	19 Jul 2004 07:11:37 -0000	1.177
--- config/sh/sh.md	28 Jul 2004 08:31:54 -0000
***************
*** 3389,3395 ****
  	(unspec:SI [(match_operand 1 "register_operand" "")] UNSPEC_RA))]
    "TARGET_SH1"
    "#"
!   "&& ! rtx_equal_function_value_matters"
    [(set (match_dup 0) (match_dup 1))]
    "
  {
--- 3389,3395 ----
  	(unspec:SI [(match_operand 1 "register_operand" "")] UNSPEC_RA))]
    "TARGET_SH1"
    "#"
!   "&& ! currently_expanding_to_rtl"
    [(set (match_dup 0) (match_dup 1))]
    "
  {
*************** mov.l\\t1f,r0\\n\\
*** 7393,7399 ****
      }
    if (sh_expand_t_scc (EQ, operands[0]))
      DONE;
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (EQ);
  }")
--- 7393,7399 ----
      }
    if (sh_expand_t_scc (EQ, operands[0]))
      DONE;
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (EQ);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7441,7447 ****
  	}
        DONE;
      }
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (LT);
  }")
--- 7441,7447 ----
  	}
        DONE;
      }
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (LT);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7545,7551 ****
  	}
        DONE;
      }
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (GT);
  }")
--- 7545,7551 ----
  	}
        DONE;
      }
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (GT);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7599,7605 ****
        DONE;
      }
  
!   if (! rtx_equal_function_value_matters)
      FAIL;
    if (GET_MODE_CLASS (GET_MODE (sh_compare_op0)) == MODE_FLOAT)
      {
--- 7599,7605 ----
        DONE;
      }
  
!   if (! currently_expanding_to_rtl)
      FAIL;
    if (GET_MODE_CLASS (GET_MODE (sh_compare_op0)) == MODE_FLOAT)
      {
*************** mov.l\\t1f,r0\\n\\
*** 7640,7646 ****
  				     sh_compare_op0, sh_compare_op1));
        DONE;
      }
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (GTU);
  }")
--- 7640,7646 ----
  				     sh_compare_op0, sh_compare_op1));
        DONE;
      }
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (GTU);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7666,7672 ****
  				     sh_compare_op1, sh_compare_op0));
        DONE;
      }
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (LTU);
  }")
--- 7666,7672 ----
  				     sh_compare_op1, sh_compare_op0));
        DONE;
      }
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (LTU);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7697,7703 ****
  
        DONE;
      }
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (LEU);
  }")
--- 7697,7703 ----
  
        DONE;
      }
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (LEU);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7729,7735 ****
        DONE;
      }
  
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (GEU);
  }")
--- 7729,7735 ----
        DONE;
      }
  
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (GEU);
  }")
*************** mov.l\\t1f,r0\\n\\
*** 7780,7786 ****
  
    if (sh_expand_t_scc (NE, operands[0]))
      DONE;
!   if (! rtx_equal_function_value_matters)
      FAIL;
    operands[1] = prepare_scc_operands (EQ);
    operands[2] = gen_reg_rtx (SImode);
--- 7780,7786 ----
  
    if (sh_expand_t_scc (NE, operands[0]))
      DONE;
!   if (! currently_expanding_to_rtl)
      FAIL;
    operands[1] = prepare_scc_operands (EQ);
    operands[2] = gen_reg_rtx (SImode);

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups)
  2004-07-28 15:02     ` Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups) Steven Bosscher
@ 2004-07-28 15:52       ` Andreas Schwab
  2004-07-29  8:16       ` Richard Henderson
  1 sibling, 0 replies; 8+ messages in thread
From: Andreas Schwab @ 2004-07-28 15:52 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: gcc-patches, rth

Steven Bosscher <stevenb@suse.de> writes:

> On Wednesday 28 July 2004 10:22, Steven Bosscher wrote:
>> I'll prepare a patch.
>
> Like so.  Can you give this a try please?
>
> 	* rtl.c (currently_expanding_to_rtl): New.
> 	* rtl.h (currently_expanding_to_rtl): Export it.
> 	* cfgexpand.c (tree_cfg_expand): Set/clear it at entry/exit.
>
> 	* config/alpha/alpha.c (alpha_expand_mov): Remove old RTL
> 	inliner hack.
> 	* config/sh/sh.c: Replace rtx_equal_function_value_matters
> 	with currently_expanding_to_rtl.
> 	* config/sh/sh.md: Likewise.
> 	* config/ia64/ia64.c (got_symbolic_operand): Likewise.
>

Bootstrap on ia64-linux was successful.

Thanks, Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups)
  2004-07-28 15:02     ` Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups) Steven Bosscher
  2004-07-28 15:52       ` Andreas Schwab
@ 2004-07-29  8:16       ` Richard Henderson
  1 sibling, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2004-07-29  8:16 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: Andreas Schwab, gcc-patches

Ok.


r~

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2004-07-28 18:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-07-22  7:30 Accumulated cleanups Steven Bosscher
2004-07-26 22:53 ` Ping: " Steven Bosscher
2004-07-28  3:17 ` Jeffrey A Law
2004-07-28 14:47 ` Andreas Schwab
2004-07-28 15:02   ` Steven Bosscher
2004-07-28 15:02     ` Hopefully fix Alpha/SH/IA64 for mainline (was: Re: Accumulated cleanups) Steven Bosscher
2004-07-28 15:52       ` Andreas Schwab
2004-07-29  8:16       ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).