From: Jakub Jelinek Date: Mon, 28 Jan 2013 16:50:22 +0000 (+0100) Subject: re PR rtl-optimization/56117 (ICE: in cselib_subst_to_values, at cselib.c:1853 with... X-Git-Tag: releases/gcc-4.8.0~750 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db1fb332e127cef6bcbfd861e597ddb84505210f;p=thirdparty%2Fgcc.git re PR rtl-optimization/56117 (ICE: in cselib_subst_to_values, at cselib.c:1853 with -O2 -fsched2-use-superblocks and __builtin_prefetch()) PR rtl-optimization/56117 * sched-deps.c (sched_analyze_2) : For use_cselib call cselib_lookup_from_insn on the MEM before calling add_insn_mem_dependence. * gcc.dg/pr56117.c: New test. From-SVN: r195513 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bc0bd16d37f..cab97ef5553d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-01-28 Jakub Jelinek + + PR rtl-optimization/56117 + * sched-deps.c (sched_analyze_2) : For use_cselib + call cselib_lookup_from_insn on the MEM before calling + add_insn_mem_dependence. + 2013-01-28 Richard Biener * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 2b4028663b16..7de974b6358e 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -2720,8 +2720,12 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx insn) prefetch has only the start address but it is better to have something than nothing. */ if (!deps->readonly) - add_insn_mem_dependence (deps, true, insn, - gen_rtx_MEM (Pmode, XEXP (PATTERN (insn), 0))); + { + rtx x = gen_rtx_MEM (Pmode, XEXP (PATTERN (insn), 0)); + if (sched_deps_info->use_cselib) + cselib_lookup_from_insn (x, Pmode, true, VOIDmode, insn); + add_insn_mem_dependence (deps, true, insn, x); + } break; case UNSPEC_VOLATILE: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fecca1e1c493..ebc18d9bd27e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-01-28 Jakub Jelinek + + PR rtl-optimization/56117 + * gcc.dg/pr56117.c: New test. + 2013-01-28 Richard Biener PR tree-optimization/56034 diff --git a/gcc/testsuite/gcc.dg/pr56117.c b/gcc/testsuite/gcc.dg/pr56117.c new file mode 100644 index 000000000000..24220481562f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr56117.c @@ -0,0 +1,9 @@ +/* PR rtl-optimization/56117 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fsched2-use-superblocks" } */ + +void +foo (void *p) +{ + __builtin_prefetch (p); +}