diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-01-28 17:50:22 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-01-28 17:50:22 +0100 |
commit | db1fb332e127cef6bcbfd861e597ddb84505210f (patch) | |
tree | 0db0e0a407245a418257e3f7b74f6a99171a2878 /gcc/sched-deps.c | |
parent | 16917761718f236f6e40a043a64c746f174870ef (diff) | |
download | gcc-db1fb332e127cef6bcbfd861e597ddb84505210f.zip gcc-db1fb332e127cef6bcbfd861e597ddb84505210f.tar.gz gcc-db1fb332e127cef6bcbfd861e597ddb84505210f.tar.bz2 |
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) <case PREFETCH>: 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
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r-- | gcc/sched-deps.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 2b40286..7de974b 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: |