[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