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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/sched-deps.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr56117.c | 9 |
4 files changed, 27 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bc0bd1..cab97ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-01-28 Jakub Jelinek <jakub@redhat.com> + + 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. + 2013-01-28 Richard Biener <rguenther@suse.de> * tree-inline.c (remap_gimple_stmt): Do not assing a BLOCK 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: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fecca1e..ebc18d9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-01-28 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/56117 + * gcc.dg/pr56117.c: New test. + 2013-01-28 Richard Biener <rguenther@suse.de> 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 0000000..2422048 --- /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); +} |