[llvm-commits] [llvm] r58560 - /llvm/trunk/lib/CodeGen/PreAllocSplitting.cpp
Bill Wendling
isanbard at gmail.com
Sun Nov 2 17:15:34 PST 2008
Owen,
This is causing tests to fail:
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/
CodeGen/X86/pre-split3.ll
Failed with exit(1) at line 1 while running: llvm-as < /Volumes/
Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/pre-
split3.ll | llc -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& /
usr/bin/grep {pre-alloc-split} | /usr/bin/grep {Number of intervals
split} | /usr/bin/grep 1
child process exited abnormally
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/
CodeGen/X86/pre-split4.ll
Failed with exit(1) at line 1 while running: llvm-as < /Volumes/
Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/pre-
split4.ll | llc -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& /
usr/bin/grep {pre-alloc-split} | /usr/bin/grep {Number of intervals
split} | /usr/bin/grep 4
child process exited abnormally
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/
CodeGen/X86/pre-split8.ll
Failed with exit(1) at line 1 while running: llvm-as < /Volumes/
Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/pre-
split8.ll | llc -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& /
usr/bin/grep {pre-alloc-split} | /usr/bin/grep {Number of intervals
split} | /usr/bin/grep 1
child process exited abnormally
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/
CodeGen/X86/pre-split9.ll
Failed with exit(1) at line 1 while running: llvm-as < /Volumes/
Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/test/CodeGen/X86/pre-
split9.ll | llc -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& /
usr/bin/grep {pre-alloc-split} | /usr/bin/grep {Number of intervals
split} | /usr/bin/grep 1
child process exited abnormally
Please investigate and XFAIL/adjust as appropriate.
Thanks!
-bw
On Nov 2, 2008, at 1:08 AM, Owen Anderson wrote:
> Author: resistor
> Date: Sun Nov 2 02:08:18 2008
> New Revision: 58560
>
> URL: http://llvm.org/viewvc/llvm-project?rev=58560&view=rev
> Log:
> Don't do pre-splitting if doing so would create a value join that
> did not
> exist before. Updating the live intervals in that care is tricky in
> the general
> case.
>
> Evan, if you see a tighter guard condition for this, let me know.
>
> Modified:
> llvm/trunk/lib/CodeGen/PreAllocSplitting.cpp
>
> Modified: llvm/trunk/lib/CodeGen/PreAllocSplitting.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PreAllocSplitting.cpp?rev=58560&r1=58559&r2=58560&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/CodeGen/PreAllocSplitting.cpp (original)
> +++ llvm/trunk/lib/CodeGen/PreAllocSplitting.cpp Sun Nov 2 02:08:18
> 2008
> @@ -89,6 +89,8 @@
> AU.addPreservedID(StrongPHIEliminationID);
> else
> AU.addPreservedID(PHIEliminationID);
> + AU.addRequired<MachineLoopInfo>();
> + AU.addPreserved<MachineLoopInfo>();
> MachineFunctionPass::getAnalysisUsage(AU);
> }
>
> @@ -633,6 +635,14 @@
> assert(0 && "Val# is defined by a dead def?");
> abort();
> }
> +
> + // Pre-splitting a vreg that does not have a PHI kill across a
> barrier
> + // that is within a loop can potentially create a join that was not
> + // present before, which would make updating the live intervals
> very
> + // difficult. Bailout instead.
> + MachineLoopInfo& MLI = getAnalysis<MachineLoopInfo>();
> + if (!ValNo->hasPHIKill && MLI.getLoopFor(BarrierMBB))
> + return false;
>
> // FIXME: For now, if definition is rematerializable, do not split.
> MachineInstr *DefMI = (ValNo->def != ~0U)
>
>
> _______________________________________________
> 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