diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cfgcleanup.c | 16 | 
2 files changed, 18 insertions, 4 deletions
| diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 229e3f27fe7..095d80258c4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-16  Zdenek Dvorak  <dvorakz@suse.cz> + +	PR rtl-optimization/17723 +	* cfgcleanup.c (merge_memattrs): Handle case when +	MEM_SIZE == NULL_RTX. +  2004-10-15  Andrew Pinski  <pinskia@physics.uc.edu>  	* toplev.c (dump_file_name): Change type to be const. diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index eccaab4605e..089c3303445 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -934,6 +934,8 @@ merge_memattrs (rtx x, rtx y)  	MEM_ATTRS (x) = 0;        else   	{ +	  rtx mem_size; +  	  if (MEM_ALIAS_SET (x) != MEM_ALIAS_SET (y))  	    {  	      set_mem_alias_set (x, 0); @@ -952,10 +954,16 @@ merge_memattrs (rtx x, rtx y)  	      set_mem_offset (x, 0);  	      set_mem_offset (y, 0);  	    } -	   -	  set_mem_size (x, GEN_INT (MAX (INTVAL (MEM_SIZE (x)), -					 INTVAL (MEM_SIZE (y))))); -	  set_mem_size (y, MEM_SIZE (x)); +	  +	  if (!MEM_SIZE (x)) +	    mem_size = NULL_RTX; +	  else if (!MEM_SIZE (y)) +	    mem_size = NULL_RTX; +	  else +	    mem_size = GEN_INT (MAX (INTVAL (MEM_SIZE (x)), +				     INTVAL (MEM_SIZE (y)))); +	  set_mem_size (x, mem_size); +	  set_mem_size (y, mem_size);  	  set_mem_align (x, MIN (MEM_ALIGN (x), MEM_ALIGN (y)));  	  set_mem_align (y, MEM_ALIGN (x)); | 

