From 6216f94e37db8de5a846c5945f4aa5f4e32aaedf Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 24 Apr 2009 08:58:02 +0200 Subject: re PR rtl-optimization/39794 (Miscompile with -O2 -funroll-loops) PR rtl-optimization/39794 * alias.c (canon_true_dependence): Add x_addr argument. * rtl.h (canon_true_dependence): Adjust prototype. * cse.c (check_dependence): Adjust canon_true_dependence callers. * cselib.c (cselib_invalidate_mem): Likewise. * gcse.c (compute_transp): Likewise. * dse.c (scan_reads_nospill): Likewise. (record_store, check_mem_read_rtx): Likewise. For non-const-or-frame addresses pass base->val_rtx as mem_addr, for const-or-frame addresses canon_base_addr of the group, plus optional offset. (struct group_info): Rename canon_base_mem to canon_base_addr. (get_group_info): Set canon_base_addr to canon_rtx of base, not canon_rtx of base_mem. * gcc.dg/pr39794.c: New test. From-SVN: r146669 --- gcc/cse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/cse.c') diff --git a/gcc/cse.c b/gcc/cse.c index c238efd..3f36a1c 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -1658,7 +1658,7 @@ check_dependence (rtx *x, void *data) { struct check_dependence_data *d = (struct check_dependence_data *) data; if (*x && MEM_P (*x)) - return canon_true_dependence (d->exp, d->mode, d->addr, *x, + return canon_true_dependence (d->exp, d->mode, d->addr, *x, NULL_RTX, cse_rtx_varies_p); else return 0; -- cgit v1.1