diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2009-08-13 16:19:51 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2009-08-13 16:19:51 +0000 |
| commit | 0e73fdff6c3b2d3bc9a8ff513b7f9492e628d008 (patch) | |
| tree | dd68c1671c3d6c13153d1f492d7ea84b36f92d06 /llvm/lib/CodeGen | |
| parent | 3de4a60e1e6d53a7a9b2161bd87ae64a28fc1397 (diff) | |
| download | bcm5719-llvm-0e73fdff6c3b2d3bc9a8ff513b7f9492e628d008.tar.gz bcm5719-llvm-0e73fdff6c3b2d3bc9a8ff513b7f9492e628d008.zip | |
Use pristine register info in machine code verifier.
So far these registers are simply tracked as if they were live-in.
llvm-svn: 78912
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/MachineVerifier.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp index 0b9127fd4a5..eb9ef954750 100644 --- a/llvm/lib/CodeGen/MachineVerifier.cpp +++ b/llvm/lib/CodeGen/MachineVerifier.cpp @@ -29,6 +29,7 @@ #include "llvm/Function.h" #include "llvm/CodeGen/LiveVariables.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/Passes.h" #include "llvm/Target/TargetMachine.h" @@ -316,6 +317,16 @@ MachineVerifier::visitMachineBasicBlockBefore(const MachineBasicBlock *MBB) regsLive.insert(*R); } regsLiveInButUnused = regsLive; + + const MachineFrameInfo *MFI = MF->getFrameInfo(); + assert(MFI && "Function has no frame info"); + BitVector PR = MFI->getPristineRegs(MBB); + for (int I = PR.find_first(); I>0; I = PR.find_next(I)) { + regsLive.insert(I); + for (const unsigned *R = TRI->getSubRegisters(I); *R; R++) + regsLive.insert(*R); + } + regsKilled.clear(); regsDefined.clear(); } |

