From 85e4d983f32f0001b2419b024fa8660dea2deac5 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sun, 5 Nov 1995 11:02:07 -0500 Subject: [PATCH] (invalidate): For a pseudo register, do a loop to invalidate all table entries, irrespective of mode. From-SVN: r10556 --- gcc/cse.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/cse.c b/gcc/cse.c index 2c9ee2e6eab..7fa597e091d 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -1536,7 +1536,15 @@ invalidate (x, full_mode) reg_tick[regno]++; if (regno >= FIRST_PSEUDO_REGISTER) - remove_from_table (lookup_for_remove (x, hash, GET_MODE (x)), hash); + { + /* Because a register can be referenced in more than one mode, + we might have to remove more than one table entry. */ + + struct table_elt *elt; + + while (elt = lookup_for_remove (x, hash, GET_MODE (x))) + remove_from_table (elt, hash); + } else { HOST_WIDE_INT in_table -- 2.30.2