summaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2008-08-21 21:13:50 +0000
committerMarc Kleine-Budde <mkl@pengutronix.de>2008-08-21 21:13:50 +0000
commit786fe95524f3ef853358d53c2322548c4e32133c (patch)
treee5807d70be0c1902a25441ce16ad349e922899b9 /patches
parent3b4248924af85c35a5ccbb7e23b1f942ef60b65d (diff)
downloadOSELAS.Toolchain-786fe95524f3ef853358d53c2322548c4e32133c.tar.gz
OSELAS.Toolchain-786fe95524f3ef853358d53c2322548c4e32133c.tar.xz
git-svn-id: https://svn.pengutronix.de/svn/oselas/toolchain/trunks/OSELAS.Toolchain-trunk@7239 f8d472c7-5700-0410-ac5a-87979cec3adf
Diffstat (limited to 'patches')
-rw-r--r--patches/gcc-TODO/PR27363.diff164
1 files changed, 0 insertions, 164 deletions
diff --git a/patches/gcc-TODO/PR27363.diff b/patches/gcc-TODO/PR27363.diff
deleted file mode 100644
index 98460ad..0000000
--- a/patches/gcc-TODO/PR27363.diff
+++ /dev/null
@@ -1,164 +0,0 @@
-#
-# Submitted-By: Robert Schwebel, 2006-07-20
-# Committed-By: Robert Schwebel
-#
-# Error:
-#
-# The following construction is broken:
-#
-# struct = *some_other_struct;
-#
-# For details see bugzilla entry below.
-#
-# Description:
-#
-# This is a patch against gcc-trunk which fixes the following bug from
-# gcc bugzilla:
-#
-# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27363
-#
-# The patch was taken from upstream cvs for trunk and has to be adapted
-# to random gcc versions. It is at least necessary until gcc 4.1.0
-#
-# State:
-#
-# fixed in upstream cvs
-#
-
---- trunk/gcc/ChangeLog 2006/07/20 08:34:53 115613
-+++ trunk/gcc/ChangeLog 2006/07/20 13:57:31 115614
-@@ -1,3 +1,9 @@
-+2006-07-20 Paul Brook <paul@codesourcery.com>
-+
-+ PR 27363
-+ * cse.c (cse_insn): Add destination addresses to hash table. Check if
-+ they are invalidated by this instruction.
-+
- 2006-07-21 Danny Smith <dannysmith@users.sourceforge.net>
-
- PR target/28427
---- trunk/gcc/cse.c 2006/07/20 08:34:53 115613
-+++ trunk/gcc/cse.c 2006/07/20 13:57:31 115614
-@@ -4739,6 +4739,8 @@
- unsigned src_const_hash;
- /* Table entry for constant equivalent for SET_SRC, if any. */
- struct table_elt *src_const_elt;
-+ /* Table entry for the destination address. */
-+ struct table_elt *dest_addr_elt;
- };
-
- static void
-@@ -5970,6 +5972,40 @@
- so that the destination goes into that class. */
- sets[i].src_elt = src_eqv_elt;
-
-+ /* Record destination addresses in the hash table. This allows us to
-+ check if they are invalidated by other sets. */
-+ for (i = 0; i < n_sets; i++)
-+ {
-+ if (sets[i].rtl)
-+ {
-+ rtx x = sets[i].inner_dest;
-+ struct table_elt *elt;
-+ enum machine_mode mode;
-+ unsigned hash;
-+
-+ if (MEM_P (x))
-+ {
-+ x = XEXP (x, 0);
-+ mode = GET_MODE (x);
-+ hash = HASH (x, mode);
-+ elt = lookup (x, hash, mode);
-+ if (!elt)
-+ {
-+ if (insert_regs (x, NULL, 0))
-+ {
-+ rehash_using_reg (x);
-+ hash = HASH (x, mode);
-+ }
-+ elt = insert (x, NULL, hash, mode);
-+ }
-+
-+ sets[i].dest_addr_elt = elt;
-+ }
-+ else
-+ sets[i].dest_addr_elt = NULL;
-+ }
-+ }
-+
- invalidate_from_clobbers (x);
-
- /* Some registers are invalidated by subroutine calls. Memory is
-@@ -6062,12 +6098,20 @@
- }
-
- /* We may have just removed some of the src_elt's from the hash table.
-- So replace each one with the current head of the same class. */
-+ So replace each one with the current head of the same class.
-+ Also check if destination addresses have been removed. */
-
- for (i = 0; i < n_sets; i++)
- if (sets[i].rtl)
- {
-- if (sets[i].src_elt && sets[i].src_elt->first_same_value == 0)
-+ if (sets[i].dest_addr_elt
-+ && sets[i].dest_addr_elt->first_same_value == 0)
-+ {
-+ /* The elt was removed, which means this destination s not
-+ valid after this instruction. */
-+ sets[i].rtl = NULL_RTX;
-+ }
-+ else if (sets[i].src_elt && sets[i].src_elt->first_same_value == 0)
- /* If elt was removed, find current head of same class,
- or 0 if nothing remains of that class. */
- {
-/* PR27363. CSE was breaking on the arm store multiple insn used for
- structure copies. */
-/* { dg-do run } */
-/* { dg-options "-Os" } */
-extern void abort (void);
-
-struct snd_mask {
- unsigned int bits[6];
-};
-
-static int __attribute__((noinline))
-snd_mask_refine(struct snd_mask *mask)
-{
- struct snd_mask old;
-
- old = *mask;
- if (mask->bits[0]==0 && mask->bits[1]==0)
- return 1;
-
- return old.bits[0] != mask->bits[0];
-}
-
-int main(int argc, char *argv[])
-{
- struct snd_mask mask;
-
-
- mask.bits[0] = 23;
- mask.bits[1] = 42;
- mask.bits[2] = 0;
- mask.bits[3] = 0;
- mask.bits[4] = 0;
- mask.bits[5] = 0;
-
-
- if (snd_mask_refine(&mask))
- abort();
- return 0;
-}
---- trunk/gcc/testsuite/ChangeLog 2006/07/20 08:34:53 115613
-+++ trunk/gcc/testsuite/ChangeLog 2006/07/20 13:57:31 115614
-@@ -1,3 +1,8 @@
-+2006-07-20 Paul Brook <paul@codesourcery.com>
-+
-+ PR 27363
-+ * gcc.dg/pr27363.c: New test.
-+
- 2006-07-19 Mark Mitchell <mark@codesourcery.com>
-
- PR c++/28338