0f92cc9...
by
jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Backported from mainline
2015-01-13 Jakub Jelinek <email address hidden>
PR rtl-optimization/64286
* ree.c (combine_reaching_defs): Move part of comment earlier,
remove !SCALAR_INT_MODE_P check.
(add_removable_extension): Don't add vector mode
extensions if all uses of the source register aren't the same
vector extensions.
d8b307f...
by
law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
2014-06-13 Jeff Law <email address hidden>
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.
20abb33...
by
law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
PR rtl-optimization/61094
* ree.c (combine_reaching_defs): Do not reextend an insn if it
was marked as do_no_reextend. If a copy is needed to eliminate
an extension, then mark it as do_not_reextend.
PR rtl-optimization/61094
* g++.dg/pr61094: New test.
c816838...
by
law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
PR rtl-optimization/60131
* ree.c (get_extended_src_reg): New function.
(combine_reaching_defs): Use it rather than assuming location
of REG.
(find_and_remove_re): Verify first operand of extension is
a REG before adding the insns to the copy list.
PR rtl-optimization/60131
* g++.dg/torture/pr60131.C: New test.
9082330...
by
law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
PR tree-optimization/59747
* ree.c (find_and_remove_re): Properly handle case where a second
eliminated extension requires widening a copy created for elimination
of a prior extension.
(combine_set_extension): Ensure that the number of hard regs needed
for a destination register does not change when we widen it.
PR tree-optimization/59747
* gcc.c-torture/execute/pr59747.c: New test.
9420e58...
by
law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
PR middle-end/59743
* ree.c (combine_reaching_defs): Ensure the defining statement
occurs before the extension when optimizing extensions with
different source and destination hard registers.
PR middle-end/59743
* gcc.c-torture/compile/pr59743.c: New test.
625c3a0...
by
law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
PR middle-end/53623
* ree.c (combine_set_extension): Handle case where source
and destination registers in an extension insn are different.
(combine_reaching_defs): Allow source and destination
registers in extension to be different under limited
circumstances.
(add_removable_extension): Remove restriction that the
source and destination registers in the extension are the
same.
(find_and_remove_re): Emit a copy from the extension's
destination to its source after the defining insn if
the source and destination registers are different.
PR middle-end/53623
* gcc.target/i386/pr53623.c: New test.