From 43fe47ca785b524496e2082eddfd00b50b68b281 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Fri, 7 Sep 2001 23:25:01 +0000 Subject: re PR rtl-optimization/3783 (gcc3.0/ia64 ICE on linux kernel file fs/ufs/super.c) Fix for PR 3783. * alias.c (clear_reg_alias_info): New. * flow.c (attempt_auto_inc): Call clear_reg_alias_info. * rtl.h (clear_reg_alias_info): Declare. From-SVN: r45482 --- gcc/alias.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gcc/alias.c') diff --git a/gcc/alias.c b/gcc/alias.c index d8e9d42..8c6ad5f 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -960,6 +960,20 @@ record_base_value (regno, val, invariant) reg_base_value[regno] = find_base_value (val); } +/* Clear alias info for a register. This is used if an RTL transformation + changes the value of a register. This is used in flow by AUTO_INC_DEC + optimizations. We don't need to clear reg_base_value, since flow only + changes the offset. */ + +void +clear_reg_alias_info (rtx reg) +{ + int regno = REGNO (reg); + + if (regno < reg_known_value_size) + reg_known_value[regno] = reg; +} + /* Returns a canonical version of X, from the point of view alias analysis. (For example, if X is a MEM whose address is a register, and the register has a known value (say a SYMBOL_REF), then a MEM -- cgit v1.1