aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-09-01 13:15:41 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2014-09-01 13:15:41 +0200
commita0107bd001ec4bc30b345a157561f27ca4419e0b (patch)
tree96dc45f9cef7c0d66d949becf012197d38b0774f /gcc/sched-deps.c
parente507a43338b75714233a271186baa4c68bf50e64 (diff)
downloadgcc-a0107bd001ec4bc30b345a157561f27ca4419e0b.zip
gcc-a0107bd001ec4bc30b345a157561f27ca4419e0b.tar.gz
gcc-a0107bd001ec4bc30b345a157561f27ca4419e0b.tar.bz2
re PR target/62025 (Miscompilation of openssl sha512.c)
PR target/62025 * sched-deps.c (add_or_update_dep_1): If ask_dependency_caches returned DEP_PRESENT, make sure to set DEP_MULTIPLE on present_dep. (find_inc): Revert 2014-08-13 change. From-SVN: r214786
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r--gcc/sched-deps.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index e922a96..455ed19 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1235,6 +1235,13 @@ add_or_update_dep_1 (dep_t new_dep, bool resolved_p,
switch (ask_dependency_caches (new_dep))
{
case DEP_PRESENT:
+ dep_t present_dep;
+ sd_iterator_def sd_it;
+
+ present_dep = sd_find_dep_between_no_cache (DEP_PRO (new_dep),
+ DEP_CON (new_dep),
+ resolved_p, &sd_it);
+ DEP_MULTIPLE (present_dep) = 1;
return DEP_PRESENT;
case DEP_CHANGED:
@@ -4765,23 +4772,6 @@ find_inc (struct mem_inc_info *mii, bool backwards)
goto next;
}
- /* The inc instruction could have clobbers, make sure those
- registers are not used in mem insn. */
- FOR_EACH_INSN_DEF (def, mii->inc_insn)
- if (!reg_overlap_mentioned_p (DF_REF_REG (def), mii->mem_reg0))
- {
- df_ref use;
- FOR_EACH_INSN_USE (use, mii->mem_insn)
- if (reg_overlap_mentioned_p (DF_REF_REG (def),
- DF_REF_REG (use)))
- {
- if (sched_verbose >= 5)
- fprintf (sched_dump,
- "inc clobber used in store failure.\n");
- goto next;
- }
- }
-
newaddr = mii->inc_input;
if (mii->mem_index != NULL_RTX)
newaddr = gen_rtx_PLUS (GET_MODE (newaddr), newaddr,