[llvm-commits] CVS: llvm/lib/CodeGen/LiveIntervalAnalysis.cpp VirtRegMap.cpp
Evan Cheng
evan.cheng at apple.com
Sun Jun 17 17:06:47 PDT 2007
Hi Dan,
Is this necessary? ARM is already doing this by marking trivially re-
materializable instructions with let isReMaterializable = 1.
Evan
On Jun 14, 2007, at 1:51 PM, Dan Gohman wrote:
>
>
> Changes in directory llvm/lib/CodeGen:
>
> LiveIntervalAnalysis.cpp updated: 1.246 -> 1.247
> VirtRegMap.cpp updated: 1.111 -> 1.112
> ---
> Log message:
>
> Add a target hook to allow loads from constant pools to be
> rematerialized, and an
> implementation for x86.
>
>
> ---
> Diffs of the changes: (+6 -3)
>
> LiveIntervalAnalysis.cpp | 6 ++++--
> VirtRegMap.cpp | 3 ++-
> 2 files changed, 6 insertions(+), 3 deletions(-)
>
>
> Index: llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
> diff -u llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.246 llvm/lib/
> CodeGen/LiveIntervalAnalysis.cpp:1.247
> --- llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.246 Fri Jun 8
> 12:18:56 2007
> +++ llvm/lib/CodeGen/LiveIntervalAnalysis.cpp Thu Jun 14 15:50:44 2007
> @@ -336,12 +336,14 @@
> // time we see a vreg.
> if (interval.empty()) {
> // Remember if the definition can be rematerialized. All
> load's from fixed
> - // stack slots are re-materializable.
> + // stack slots are re-materializable. The target may permit
> other loads to
> + // be re-materialized as well.
> int FrameIdx = 0;
> if (vi.DefInst &&
> (tii_->isReMaterializable(vi.DefInst->getOpcode()) ||
> (tii_->isLoadFromStackSlot(vi.DefInst, FrameIdx) &&
> - mf_->getFrameInfo()->isFixedObjectIndex(FrameIdx))))
> + mf_->getFrameInfo()->isFixedObjectIndex(FrameIdx)) ||
> + tii_->isOtherReMaterializableLoad(vi.DefInst)))
> interval.remat = vi.DefInst;
>
> // Get the Idx of the defining instructions.
>
>
> Index: llvm/lib/CodeGen/VirtRegMap.cpp
> diff -u llvm/lib/CodeGen/VirtRegMap.cpp:1.111 llvm/lib/CodeGen/
> VirtRegMap.cpp:1.112
> --- llvm/lib/CodeGen/VirtRegMap.cpp:1.111 Thu Apr 26 13:59:33 2007
> +++ llvm/lib/CodeGen/VirtRegMap.cpp Thu Jun 14 15:50:44 2007
> @@ -664,7 +664,8 @@
> // If this instruction is being rematerialized, just remove it!
> int FrameIdx;
> if ((TID->Flags & M_REMATERIALIZIBLE) ||
> - TII->isLoadFromStackSlot(&MI, FrameIdx)) {
> + TII->isLoadFromStackSlot(&MI, FrameIdx) ||
> + TII->isOtherReMaterializableLoad(&MI)) {
> bool Remove = true;
> for (unsigned i = 0, e = MI.getNumOperands(); i != e; ++i) {
> MachineOperand &MO = MI.getOperand(i);
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list