Commit c7ece684 by Jeff Law

[multiple changes]

2014-06-13  Jeff Law  <law@redhat.com>

	PR rtl-optimization/61094
	PR rtl-optimization/61446
	* ree.c (combine_reaching_defs): Get the mode for the copy from
	the extension insn rather than the defining insn.

2014-06-13  Ilya Enkovich  <ilya.enkovich@intel.com>

	PR rtl-optimization/61094
	PR rtl-optimization/61446
	* gcc.target/i386/pr61446.c : New.

From-SVN: r211649
parent 8e96d784
2014-06-13 Jeff Law <law@redhat.com>
PR rtl-optimization/61094
PR rtl-optimization/61446
* ree.c (combine_reaching_defs): Get the mode for the copy from
the extension insn rather than the defining insn.
2014-06-13 Dehao Chen <dehao@google.com> 2014-06-13 Dehao Chen <dehao@google.com>
* dwarf2out.c (add_linkage_name): Emit more linkage name. * dwarf2out.c (add_linkage_name): Emit more linkage name.
......
...@@ -787,13 +787,16 @@ combine_reaching_defs (ext_cand *cand, const_rtx set_pat, ext_state *state) ...@@ -787,13 +787,16 @@ combine_reaching_defs (ext_cand *cand, const_rtx set_pat, ext_state *state)
generated more than one insn. generated more than one insn.
This generates garbage since we throw away the insn when we're This generates garbage since we throw away the insn when we're
done, only to recreate it later if this test was successful. */ done, only to recreate it later if this test was successful.
Make sure to get the mode from the extension (cand->insn). This
is different than in the code to emit the copy as we have not
modified the defining insn yet. */
start_sequence (); start_sequence ();
rtx sub_rtx = *get_sub_rtx (def_insn);
rtx pat = PATTERN (cand->insn); rtx pat = PATTERN (cand->insn);
rtx new_dst = gen_rtx_REG (GET_MODE (SET_DEST (sub_rtx)), rtx new_dst = gen_rtx_REG (GET_MODE (SET_DEST (pat)),
REGNO (XEXP (SET_SRC (pat), 0))); REGNO (XEXP (SET_SRC (pat), 0)));
rtx new_src = gen_rtx_REG (GET_MODE (SET_DEST (sub_rtx)), rtx new_src = gen_rtx_REG (GET_MODE (SET_DEST (pat)),
REGNO (SET_DEST (pat))); REGNO (SET_DEST (pat)));
emit_move_insn (new_dst, new_src); emit_move_insn (new_dst, new_src);
......
2014-06-13 Ilya Enkovich <ilya.enkovich@intel.com>
PR rtl-optimization/61094
PR rtl-optimization/61446
* gcc.target/i386/pr61446.c : New.
2014-06-13 Dehao Chen <dehao@google.com> 2014-06-13 Dehao Chen <dehao@google.com>
* g++.dg/debug/dwarf2/cdtor-1.C: Update test result. * g++.dg/debug/dwarf2/cdtor-1.C: Update test result.
......
/* PR rtl-optimization/61446 */
/* { dg-do compile { target { ia32 } } } */
/* { dg-options "-O2 -march=corei7 -mfpmath=387" } */
unsigned long long
foo (float a)
{
const double dfa = a;
const unsigned int hi = dfa / 0x1p32f;
const unsigned int lo = dfa - (double) hi * 0x1p32f;
return ((unsigned long long) hi << (4 * (8))) | lo;
}
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