Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/gnu/dist/toolchain/gcc Bring in diff from 1.144.4.10 to 1.14...



details:   https://anonhg.NetBSD.org/src/rev/2b87a06c7c9f
branches:  trunk
changeset: 534054:2b87a06c7c9f
user:      aymeric <aymeric%NetBSD.org@localhost>
date:      Sun Jul 14 13:55:38 2002 +0000

description:
Bring in diff from 1.144.4.10 to 1.144.4.11, from the gcc CVS repository.

This fixes (at least) broken compilation of xkbcomp with -O2 on powerpc.

ChangeLog entry:
2001-05-17  Bernd Schmidt  <bernds%redhat.com@localhost>

        * expr.c (protect_from_queue): Protect against subsequent calls to
        emit_queue.
        (expand_expr, case ADDR_EXPR): Prevent protect_from_queue from being
        too clever.

CVS log entry:
revision 1.144.4.11
date: 2001/05/17 17:01:06;  author: bernds;  state: Exp;  lines: +10 -3
Fix queueing-related bugs

diffstat:

 gnu/dist/toolchain/gcc/expr.c |  13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diffs (38 lines):

diff -r 5a97050ba020 -r 2b87a06c7c9f gnu/dist/toolchain/gcc/expr.c
--- a/gnu/dist/toolchain/gcc/expr.c     Sun Jul 14 12:30:36 2002 +0000
+++ b/gnu/dist/toolchain/gcc/expr.c     Sun Jul 14 13:55:38 2002 +0000
@@ -449,6 +449,9 @@
                                QUEUED_INSN (y));
              return temp;
            }
+         /* Copy the address into a pseudo, so that the returned value
+            remains correct across calls to emit_queue.  */
+         XEXP (new, 0) = copy_to_reg (XEXP (new, 0));
          return new;
        }
       /* Otherwise, recursively protect the subexpressions of all
@@ -475,9 +478,11 @@
        }
       return x;
     }
-  /* If the increment has not happened, use the variable itself.  */
+  /* If the increment has not happened, use the variable itself.  Copy it
+     into a new pseudo so that the value remains correct across calls to
+     emit_queue.  */
   if (QUEUED_INSN (x) == 0)
-    return QUEUED_VAR (x);
+    return copy_to_reg (QUEUED_VAR (x));
   /* If the increment has happened and a pre-increment copy exists,
      use that copy.  */
   if (QUEUED_COPY (x) != 0)
@@ -8076,7 +8081,9 @@
          if (ignore)
            return op0;
 
-         op0 = protect_from_queue (op0, 0);
+         /* Pass 1 for MODIFY, so that protect_from_queue doesn't get
+            clever and returns a REG when given a MEM.  */
+         op0 = protect_from_queue (op0, 1);
 
          /* We would like the object in memory.  If it is a constant,
             we can have it be statically allocated into memory.  For



Home | Main Index | Thread Index | Old Index