[llvm-commits] CVS: llvm/lib/VMCore/Function.cpp Verifier.cpp

Chris Lattner lattner at cs.uiuc.edu
Thu Jan 12 18:15:52 PST 2006



Changes in directory llvm/lib/VMCore:

Function.cpp updated: 1.96 -> 1.97
Verifier.cpp updated: 1.138 -> 1.139
---
Log message:

Add recognition and verification of new llvm.stacksave/llvm.stackrestore intrinsics


---
Diffs of the changes:  (+18 -4)

 Function.cpp |   10 ++++++----
 Verifier.cpp |   12 ++++++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)


Index: llvm/lib/VMCore/Function.cpp
diff -u llvm/lib/VMCore/Function.cpp:1.96 llvm/lib/VMCore/Function.cpp:1.97
--- llvm/lib/VMCore/Function.cpp:1.96	Fri Nov 11 10:46:18 2005
+++ llvm/lib/VMCore/Function.cpp	Thu Jan 12 20:15:39 2006
@@ -249,10 +249,12 @@
     if (getName() == "llvm.readcyclecounter") return Intrinsic::readcyclecounter;
     break;
   case 's':
-    if (getName() == "llvm.setjmp")     return Intrinsic::setjmp;
-    if (getName() == "llvm.sigsetjmp")  return Intrinsic::sigsetjmp;
-    if (getName() == "llvm.siglongjmp") return Intrinsic::siglongjmp;
-    if (getName() == "llvm.sqrt")       return Intrinsic::sqrt;
+    if (getName() == "llvm.setjmp")       return Intrinsic::setjmp;
+    if (getName() == "llvm.sigsetjmp")    return Intrinsic::sigsetjmp;
+    if (getName() == "llvm.siglongjmp")   return Intrinsic::siglongjmp;
+    if (getName() == "llvm.stackrestore") return Intrinsic::stackrestore;
+    if (getName() == "llvm.stacksave")    return Intrinsic::stacksave;
+    if (getName() == "llvm.sqrt")         return Intrinsic::sqrt;
     break;
   case 'v':
     if (getName() == "llvm.va_copy")  return Intrinsic::vacopy;


Index: llvm/lib/VMCore/Verifier.cpp
diff -u llvm/lib/VMCore/Verifier.cpp:1.138 llvm/lib/VMCore/Verifier.cpp:1.139
--- llvm/lib/VMCore/Verifier.cpp:1.138	Thu Jan 12 00:17:59 2006
+++ llvm/lib/VMCore/Verifier.cpp	Thu Jan 12 20:15:39 2006
@@ -796,6 +796,18 @@
   case Intrinsic::memmove:         NumArgs = 4; break;
   case Intrinsic::memset:          NumArgs = 4; break;
 
+  case Intrinsic::stacksave:
+    NumArgs = 0;
+    Assert1(CI.getType() == PointerType::get(Type::SByteTy),
+            "llvm.stacksave must return an sbyte*", &CI);
+    break;
+  case Intrinsic::stackrestore:
+    NumArgs = 1;
+    Assert1(CI.getOperand(1)->getType() == PointerType::get(Type::SByteTy),
+            "llvm.stackrestore must take an sbyte*", &CI);
+    Assert1(CI.getType() == Type::VoidTy,
+            "llvm.stackrestore return void", &CI);
+    break;
   case Intrinsic::prefetch:        NumArgs = 3; break;
   case Intrinsic::pcmarker:
     NumArgs = 1;






More information about the llvm-commits mailing list