From: Zdenek Dvorak Date: Sat, 16 Oct 2004 16:42:31 +0000 (+0200) Subject: re PR rtl-optimization/17723 (gcc segfaults with -O2) X-Git-Tag: releases/gcc-4.0.0~3996 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=71068e3124f77ddd6df4532f7c47d8e15c1987ee;p=thirdparty%2Fgcc.git re PR rtl-optimization/17723 (gcc segfaults with -O2) PR rtl-optimization/17723 * cfgcleanup.c (merge_memattrs): Handle case when MEM_SIZE == NULL_RTX. From-SVN: r89144 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 229e3f27fe73..095d80258c4d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-10-16 Zdenek Dvorak + + PR rtl-optimization/17723 + * cfgcleanup.c (merge_memattrs): Handle case when + MEM_SIZE == NULL_RTX. + 2004-10-15 Andrew Pinski * toplev.c (dump_file_name): Change type to be const. diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index eccaab4605e9..089c33034452 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));