Deleted Added
full compact
MachineVerifier.cpp (198090) MachineVerifier.cpp (198892)
1//===-- MachineVerifier.cpp - Machine Code Verifier -------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 22 unchanged lines hidden (view full) ---

31#include "llvm/CodeGen/MachineRegisterInfo.h"
32#include "llvm/CodeGen/Passes.h"
33#include "llvm/Target/TargetMachine.h"
34#include "llvm/Target/TargetRegisterInfo.h"
35#include "llvm/Target/TargetInstrInfo.h"
36#include "llvm/ADT/DenseSet.h"
37#include "llvm/ADT/SetOperations.h"
38#include "llvm/ADT/SmallVector.h"
1//===-- MachineVerifier.cpp - Machine Code Verifier -------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 22 unchanged lines hidden (view full) ---

31#include "llvm/CodeGen/MachineRegisterInfo.h"
32#include "llvm/CodeGen/Passes.h"
33#include "llvm/Target/TargetMachine.h"
34#include "llvm/Target/TargetRegisterInfo.h"
35#include "llvm/Target/TargetInstrInfo.h"
36#include "llvm/ADT/DenseSet.h"
37#include "llvm/ADT/SetOperations.h"
38#include "llvm/ADT/SmallVector.h"
39#include "llvm/Support/Compiler.h"
40#include "llvm/Support/Debug.h"
41#include "llvm/Support/ErrorHandling.h"
42#include "llvm/Support/raw_ostream.h"
43using namespace llvm;
44
45namespace {
39#include "llvm/Support/Debug.h"
40#include "llvm/Support/ErrorHandling.h"
41#include "llvm/Support/raw_ostream.h"
42using namespace llvm;
43
44namespace {
46 struct VISIBILITY_HIDDEN MachineVerifier : public MachineFunctionPass {
45 struct MachineVerifier : public MachineFunctionPass {
47 static char ID; // Pass ID, replacement for typeid
48
49 MachineVerifier(bool allowDoubleDefs = false) :
50 MachineFunctionPass(&ID),
51 allowVirtDoubleDefs(allowDoubleDefs),
52 allowPhysDoubleDefs(allowDoubleDefs),
53 OutFileName(getenv("LLVM_VERIFY_MACHINEINSTRS"))
54 {}

--- 184 unchanged lines hidden (view full) ---

239 << "- function: " << MF->getFunction()->getNameStr() << "\n";
240}
241
242void MachineVerifier::report(const char *msg, const MachineBasicBlock *MBB) {
243 assert(MBB);
244 report(msg, MBB->getParent());
245 *OS << "- basic block: " << MBB->getBasicBlock()->getNameStr()
246 << " " << (void*)MBB
46 static char ID; // Pass ID, replacement for typeid
47
48 MachineVerifier(bool allowDoubleDefs = false) :
49 MachineFunctionPass(&ID),
50 allowVirtDoubleDefs(allowDoubleDefs),
51 allowPhysDoubleDefs(allowDoubleDefs),
52 OutFileName(getenv("LLVM_VERIFY_MACHINEINSTRS"))
53 {}

--- 184 unchanged lines hidden (view full) ---

238 << "- function: " << MF->getFunction()->getNameStr() << "\n";
239}
240
241void MachineVerifier::report(const char *msg, const MachineBasicBlock *MBB) {
242 assert(MBB);
243 report(msg, MBB->getParent());
244 *OS << "- basic block: " << MBB->getBasicBlock()->getNameStr()
245 << " " << (void*)MBB
247 << " (#" << MBB->getNumber() << ")\n";
246 << " (BB#" << MBB->getNumber() << ")\n";
248}
249
250void MachineVerifier::report(const char *msg, const MachineInstr *MI) {
251 assert(MI);
252 report(msg, MI->getParent());
253 *OS << "- instruction: ";
254 MI->print(*OS, TM);
255}

--- 485 unchanged lines hidden (view full) ---

741 &BBI->getOperand(i), i);
742 }
743
744 // Did we see all predecessors?
745 for (MachineBasicBlock::const_pred_iterator PrI = MBB->pred_begin(),
746 PrE = MBB->pred_end(); PrI != PrE; ++PrI) {
747 if (!seen.count(*PrI)) {
748 report("Missing PHI operand", BBI);
247}
248
249void MachineVerifier::report(const char *msg, const MachineInstr *MI) {
250 assert(MI);
251 report(msg, MI->getParent());
252 *OS << "- instruction: ";
253 MI->print(*OS, TM);
254}

--- 485 unchanged lines hidden (view full) ---

740 &BBI->getOperand(i), i);
741 }
742
743 // Did we see all predecessors?
744 for (MachineBasicBlock::const_pred_iterator PrI = MBB->pred_begin(),
745 PrE = MBB->pred_end(); PrI != PrE; ++PrI) {
746 if (!seen.count(*PrI)) {
747 report("Missing PHI operand", BBI);
749 *OS << "MBB #" << (*PrI)->getNumber()
748 *OS << "BB#" << (*PrI)->getNumber()
750 << " is a predecessor according to the CFG.\n";
751 }
752 }
753 }
754}
755
756void MachineVerifier::visitMachineFunctionAfter() {
757 calcMaxRegsPassed();

--- 18 unchanged lines hidden (view full) ---

776 if (!MFI->isLandingPad()) {
777 for (MachineBasicBlock::const_livein_iterator I = MFI->livein_begin(),
778 E = MFI->livein_end(); I != E; ++I) {
779 if (TargetRegisterInfo::isPhysicalRegister(*I) &&
780 !isReserved (*I) && !PrInfo.isLiveOut(*I)) {
781 report("Live-in physical register is not live-out from predecessor",
782 MFI);
783 *OS << "Register " << TRI->getName(*I)
749 << " is a predecessor according to the CFG.\n";
750 }
751 }
752 }
753}
754
755void MachineVerifier::visitMachineFunctionAfter() {
756 calcMaxRegsPassed();

--- 18 unchanged lines hidden (view full) ---

775 if (!MFI->isLandingPad()) {
776 for (MachineBasicBlock::const_livein_iterator I = MFI->livein_begin(),
777 E = MFI->livein_end(); I != E; ++I) {
778 if (TargetRegisterInfo::isPhysicalRegister(*I) &&
779 !isReserved (*I) && !PrInfo.isLiveOut(*I)) {
780 report("Live-in physical register is not live-out from predecessor",
781 MFI);
782 *OS << "Register " << TRI->getName(*I)
784 << " is not live-out from MBB #" << (*PrI)->getNumber()
783 << " is not live-out from BB#" << (*PrI)->getNumber()
785 << ".\n";
786 }
787 }
788 }
789
790
791 // Verify dead-in virtual registers.
792 if (!allowVirtDoubleDefs) {

--- 48 unchanged lines hidden ---
784 << ".\n";
785 }
786 }
787 }
788
789
790 // Verify dead-in virtual registers.
791 if (!allowVirtDoubleDefs) {

--- 48 unchanged lines hidden ---