]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/17723 (gcc segfaults with -O2)
authorZdenek Dvorak <dvorakz@suse.cz>
Sat, 16 Oct 2004 16:42:31 +0000 (18:42 +0200)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Sat, 16 Oct 2004 16:42:31 +0000 (16:42 +0000)
PR rtl-optimization/17723
* cfgcleanup.c (merge_memattrs): Handle case when
MEM_SIZE == NULL_RTX.

From-SVN: r89144

gcc/ChangeLog
gcc/cfgcleanup.c

index 229e3f27fe73a1f39eeef7f6037881abc448bf43..095d80258c4dd3de37d7b4f84eebdfe7c5dd7545 100644 (file)
@@ -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.
index eccaab4605e9a8169fd6c01a1b1caf525d50bd71..089c330344521f39744814b94f8e433caa7d7200 100644 (file)
@@ -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));