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]
Other format: [Raw text]

Re: Patch to fix gcc.c-torture/compile/20010102-1.c on IA64 HP-UX


I put the ia64/predicates.md change through a full bootstrap and test
and it had no regressions and did fix the bug in question.  I'll add the
regrename.c changes to see if that has any impact, but presumably it
won't.

Steve Ellcey
sje@cup.hp.com


On Tue, 2008-09-16 at 19:42 -0500, Peter Bergner wrote:

> Index: regrename.c
> ===================================================================
> --- regrename.c	(revision 140251)
> +++ regrename.c	(working copy)
> @@ -356,12 +356,11 @@ do_replace (struct du_chain *chain, int 
>    while (chain)
>      {
>        unsigned int regno = ORIGINAL_REGNO (*chain->loc);
> -      struct reg_attrs * attr = REG_ATTRS (*chain->loc);
>  
> -      *chain->loc = gen_raw_REG (GET_MODE (*chain->loc), reg);
> +      *chain->loc = gen_reg_rtx_and_attrs (*chain->loc);
> +      SET_REGNO (*chain->loc, reg);
>        if (regno >= FIRST_PSEUDO_REGISTER)
>  	ORIGINAL_REGNO (*chain->loc) = regno;
> -      REG_ATTRS (*chain->loc) = attr;
>        df_insn_rescan (chain->insn);
>        chain = chain->next_use;
>      }
> @@ -1374,7 +1373,7 @@ find_oldest_value_reg (enum reg_class cl
>        if (new_rtx)
>  	{
>  	  ORIGINAL_REGNO (new_rtx) = ORIGINAL_REGNO (reg);
> -	  REG_ATTRS (new_rtx) = REG_ATTRS (reg);
> +	  set_reg_attrs_from_value (new_rtx, reg);
>  	  return new_rtx;
>  	}
>      }
> @@ -1672,7 +1671,7 @@ copyprop_hardreg_forward_1 (basic_block 
>  		  if (validate_change (insn, &SET_SRC (set), new_rtx, 0))
>  		    {
>  		      ORIGINAL_REGNO (new_rtx) = ORIGINAL_REGNO (src);
> -		      REG_ATTRS (new_rtx) = REG_ATTRS (src);
> +		      set_reg_attrs_from_value (new_rtx, src);
>  		      if (dump_file)
>  			fprintf (dump_file,
>  				 "insn %u: replaced reg %u with %u\n",
> Index: config/ia64/predicates.md
> ===================================================================
> --- config/ia64/predicates.md	(revision 140251)
> +++ config/ia64/predicates.md	(working copy)
> @@ -585,6 +585,6 @@ (define_predicate "ar_pfs_reg_operand"
>  (define_predicate "basereg_operand"
>    (match_operand 0 "register_operand")
>  {
> -  return REG_P (op) && REG_POINTER (op);
> +  return REG_P (op) && REG_POINTER (regno_reg_rtx[ORIGINAL_REGNO (op)]);
>  })
>  
> 
> 
> 


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