Add support for unreachable and undef
authorChris Lattner <sabre@nondot.org>
Sun, 17 Oct 2004 02:42:42 +0000 (02:42 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 17 Oct 2004 02:42:42 +0000 (02:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17074 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Sparc/SparcV8ISelSimple.cpp
lib/Target/SparcV8/SparcV8ISelSimple.cpp

index 93711eaeeb40c165de615fc00137a75ab6822288..5117a755761400c3e91af9594ce768cfacc44858 100644 (file)
@@ -90,6 +90,7 @@ namespace {
     void visitCallInst(CallInst &I);
     void visitReturnInst(ReturnInst &I);
     void visitBranchInst(BranchInst &I);
+    void visitUnreachableInst(UnreachableInst &I) {}
     void visitCastInst(CastInst &I);
     void visitLoadInst(LoadInst &I);
     void visitStoreInst(StoreInst &I);
@@ -230,6 +231,11 @@ void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB,
       std::cerr << "Copying this constant expr not yet handled: " << *CE;
       abort();
     }
+  } else if (isa<UndefValue>(C)) {
+    BuildMI(*MBB, IP, V8::IMPLICIT_DEF, 0, R);
+    if (getClassB (C->getType ()) == cLong)
+      BuildMI(*MBB, IP, V8::IMPLICIT_DEF, 0, R+1);
+    return;
   }
 
   if (C->getType()->isIntegral ()) {
index 93711eaeeb40c165de615fc00137a75ab6822288..5117a755761400c3e91af9594ce768cfacc44858 100644 (file)
@@ -90,6 +90,7 @@ namespace {
     void visitCallInst(CallInst &I);
     void visitReturnInst(ReturnInst &I);
     void visitBranchInst(BranchInst &I);
+    void visitUnreachableInst(UnreachableInst &I) {}
     void visitCastInst(CastInst &I);
     void visitLoadInst(LoadInst &I);
     void visitStoreInst(StoreInst &I);
@@ -230,6 +231,11 @@ void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB,
       std::cerr << "Copying this constant expr not yet handled: " << *CE;
       abort();
     }
+  } else if (isa<UndefValue>(C)) {
+    BuildMI(*MBB, IP, V8::IMPLICIT_DEF, 0, R);
+    if (getClassB (C->getType ()) == cLong)
+      BuildMI(*MBB, IP, V8::IMPLICIT_DEF, 0, R+1);
+    return;
   }
 
   if (C->getType()->isIntegral ()) {