From db1fb332e127cef6bcbfd861e597ddb84505210f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 28 Jan 2013 17:50:22 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/sched-deps.c | 8 ++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr56117.c | 9 +++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr56117.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bc0bd16d37..cab97ef5553 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 2b4028663b1..7de974b6358 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 fecca1e1c49..ebc18d9bd27 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 00000000000..24220481562 --- /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); +} -- 2.30.2