re PR rtl-optimization/25636 (opts.c is being miscompiled, write to read only memory)
authorBernd Schmidt <bernd.schmidt@analog.com>
Thu, 16 Feb 2006 01:26:54 +0000 (01:26 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Thu, 16 Feb 2006 01:26:54 +0000 (01:26 +0000)
PR rtl-optimization/25636
* local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
when deciding whether an insn is an initializing insn.

From-SVN: r111129

gcc/ChangeLog
gcc/local-alloc.c

index 50477ba7a2e8040962623eb75158201776ce25f3..c424d64ec2986381969ec5ceef28d8867db20637 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-16  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       PR rtl-optimization/25636
+       * local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
+       when deciding whether an insn is an initializing insn.
+
 2006-02-15 Daniel Berlin  <dberlin@dberlin.org>
 
        * tree.c (init_ttree): Add STRUCT_FIELD_TAG handling.
index d22e9e736fb47c96ffa6ba9697b214d9a8a4887d..820e0b654bf5c2dd7134d07c4d84f66f589eee59 100644 (file)
@@ -1,6 +1,7 @@
 /* Allocate registers within a basic block, for GNU compiler.
    Copyright (C) 1987, 1988, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+   Inc.
 
 This file is part of GCC.
 
@@ -962,8 +963,7 @@ update_equiv_regs (void)
 
              /* If we haven't done so, record for reload that this is an
                 equivalencing insn.  */
-             if (!reg_equiv[regno].is_arg_equivalence
-                 && (!MEM_P (x) || rtx_equal_p (src, x)))
+             if (!reg_equiv[regno].is_arg_equivalence)
                reg_equiv_init[regno]
                  = gen_rtx_INSN_LIST (VOIDmode, insn, reg_equiv_init[regno]);