[llvm-commits] CVS: llvm/lib/CodeGen/IntrinsicLowering.cpp

Chris Lattner lattner at cs.uiuc.edu
Thu Jan 12 18:22:21 PST 2006



Changes in directory llvm/lib/CodeGen:

IntrinsicLowering.cpp updated: 1.36 -> 1.37
---
Log message:

Add "support" for the llvm.stacksave/stackrestore intrinsics, this is
used by the C backend.


---
Diffs of the changes:  (+15 -2)

 IntrinsicLowering.cpp |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)


Index: llvm/lib/CodeGen/IntrinsicLowering.cpp
diff -u llvm/lib/CodeGen/IntrinsicLowering.cpp:1.36 llvm/lib/CodeGen/IntrinsicLowering.cpp:1.37
--- llvm/lib/CodeGen/IntrinsicLowering.cpp:1.36	Fri Nov 11 10:46:18 2005
+++ llvm/lib/CodeGen/IntrinsicLowering.cpp	Thu Jan 12 20:22:08 2006
@@ -248,6 +248,19 @@
     break;
   }
 
+  case Intrinsic::stacksave:
+  case Intrinsic::stackrestore: {
+    static bool Warned = false;
+    if (!Warned)
+      std::cerr << "WARNING: this target does not support the llvm.stack"
+       << (Callee->getIntrinsicID() == Intrinsic::stacksave ?
+           "save" : "restore") << " intrinsic.\n";
+    Warned = true;
+    if (Callee->getIntrinsicID() == Intrinsic::stacksave)
+      CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
+    break;
+  }
+    
   case Intrinsic::returnaddress:
   case Intrinsic::frameaddress:
     std::cerr << "WARNING: this target does not support the llvm."
@@ -263,8 +276,8 @@
   case Intrinsic::pcmarker:
     break;    // Simply strip out pcmarker on unsupported architectures
   case Intrinsic::readcyclecounter: {
-    std::cerr << "WARNING: this target does not support the llvm.readcyclecounter"
-              << " intrinsic.  It is being lowered to a constant 0\n";
+    std::cerr << "WARNING: this target does not support the llvm.readcyclecoun"
+              << "ter intrinsic.  It is being lowered to a constant 0\n";
     CI->replaceAllUsesWith(ConstantUInt::get(Type::ULongTy, 0));
     break;
   }






More information about the llvm-commits mailing list