Commit c7cf969c by Jakub Jelinek Committed by Jakub Jelinek

re PR target/62025 (Miscompilation of openssl sha512.c)

	PR target/62025
	* sched-deps.c (find_inc): Check if inc_insn doesn't clobber
	any registers that are used in mem_insn.

From-SVN: r213887
parent 06a1d02e
2014-08-12 Jakub Jelinek <jakub@redhat.com>
PR target/62025
* sched-deps.c (find_inc): Check if inc_insn doesn't clobber
any registers that are used in mem_insn.
2014-08-12 Steve Ellcey <sellcey@mips.com> 2014-08-12 Steve Ellcey <sellcey@mips.com>
* config/mips/mips.h (ASM_SPEC): Pass float options to assembler. * config/mips/mips.h (ASM_SPEC): Pass float options to assembler.
......
...@@ -4751,6 +4751,24 @@ find_inc (struct mem_inc_info *mii, bool backwards) ...@@ -4751,6 +4751,24 @@ find_inc (struct mem_inc_info *mii, bool backwards)
"inc conflicts with store failure.\n"); "inc conflicts with store failure.\n");
goto next; 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; newaddr = mii->inc_input;
if (mii->mem_index != NULL_RTX) if (mii->mem_index != NULL_RTX)
newaddr = gen_rtx_PLUS (GET_MODE (newaddr), newaddr, newaddr = gen_rtx_PLUS (GET_MODE (newaddr), newaddr,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment