diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9b397f9288c..c27ecb19101 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -5,6 +5,12 @@ Sun Oct 26 10:06:11 1997 Toon Moene Sun Oct 26 09:21:40 1997 Jeffrey A Law (law@cygnus.com) + * alias.c (find_base_value): Handle PRE_INC, PRE_DEC, POST_INC, + and POS_DEC. + (find_base_term): Likewise. + + * alias.c (true_dependence): Fix typo. + * toplev.c (flag_rerun_loop_opt): New variable. (f_options): Handle -frerun-loop-opt. (rest_of_compilation): If -frerun-loop-opt, then run the loop diff --git a/gcc/alias.c b/gcc/alias.c index eb28526c8d2..ea62cd56fe2 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -93,6 +93,13 @@ find_base_value (src) case LABEL_REF: return src; + case PRE_INC: + case PRE_DEC: + case POST_INC: + case POST_DEC: + src = XEXP (src, 0); + /* fall through */ + case REG: /* At the start of a function argument registers have known base values which may be lost later. Returning an ADDRESS @@ -463,6 +470,12 @@ find_base_term (x) case HIGH: return find_base_term (XEXP (x, 0)); + case PRE_INC: + case PRE_DEC: + case POST_INC: + case POST_DEC: + return find_base_term (XEXP (x, 0)); + case CONST: x = XEXP (x, 0); if (GET_CODE (x) != PLUS && GET_CODE (x) != MINUS) @@ -824,7 +837,8 @@ true_dependence (mem, mem_mode, x, varies) if (mem_mode == VOIDmode) mem_mode = GET_MODE (mem); - if (! memrefs_conflict_p (mem_mode, mem_addr, SIZE_FOR_MODE (x), x_addr, 0)) + if (! memrefs_conflict_p (SIZE_FOR_MODE (mem_mode), mem_addr, + SIZE_FOR_MODE (x), x_addr, 0)) return 0; /* If both references are struct references, or both are not, nothing