Enable machine code verification after PreSched2 passes.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 28 Mar 2012 23:31:15 +0000 (23:31 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 28 Mar 2012 23:31:15 +0000 (23:31 +0000)
The late scheduler depends on accurate liveness information if it is
breaking anti-dependencies, so we should be able to verify it.

Relax the terminator checking in the machine code verifier so it can
handle the basic blocks created by if conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153614 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineVerifier.cpp
lib/CodeGen/Passes.cpp

index 0e6120b98cdc874133260fd31c27dd5fda01ea57..74ba94d1fcc0b6a29c4d28249cf7d151c4eaefc5 100644 (file)
@@ -609,7 +609,9 @@ void MachineVerifier::visitMachineInstrBefore(const MachineInstr *MI) {
   }
 
   // Ensure non-terminators don't follow terminators.
-  if (MI->isTerminator()) {
+  // Ignore predicated terminators formed by if conversion.
+  // FIXME: If conversion shouldn't need to violate this rule.
+  if (MI->isTerminator() && !TII->isPredicated(MI)) {
     if (!FirstTerminator)
       FirstTerminator = MI;
   } else if (FirstTerminator) {
index f91798cdfda2bfa7f9c05b5fcd7b874e3f1d2ccf..4a25af02f05d0cdea1c82da0a8846896df89af41 100644 (file)
@@ -398,7 +398,7 @@ void TargetPassConfig::addMachinePasses() {
 
   // Run pre-sched2 passes.
   if (addPreSched2())
-    printNoVerify("After PreSched2 passes");
+    printAndVerify("After PreSched2 passes");
 
   // Second pass scheduler.
   if (getOptLevel() != CodeGenOpt::None) {