Add a couple more helper functions to deal with
authorEric Christopher <echristo@apple.com>
Wed, 2 Jul 2008 22:57:59 +0000 (22:57 +0000)
committerEric Christopher <echristo@apple.com>
Wed, 2 Jul 2008 22:57:59 +0000 (22:57 +0000)
creating global constant strings and pointers
to global constant strings.

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

include/llvm/Support/IRBuilder.h

index 09859092aee960da15ac9951391a02e42edad3a1..b96c412ee188591af2b16bcd4a91dad2d8327da2 100644 (file)
@@ -18,6 +18,8 @@
 #include "llvm/BasicBlock.h"
 #include "llvm/Instructions.h"
 #include "llvm/Constants.h"
+#include "llvm/GlobalVariable.h"
+#include "llvm/Function.h"
 
 namespace llvm {
 
@@ -308,7 +310,24 @@ public:
     
     return Insert(GetElementPtrInst::Create(Ptr, Idxs, Idxs+2), Name);
   }
-  
+  Value *CreateGlobalString(const char *Str = "", const char *Name = "") {
+    Constant *StrConstant = ConstantArray::get(Str, true);
+    GlobalVariable *gv = new llvm::GlobalVariable(StrConstant->getType(),
+                                                  true, 
+                                                  GlobalValue::InternalLinkage,
+                                                  StrConstant,
+                                                  "",
+                                                  BB->getParent()->getParent(),
+                                                  false);
+    gv->setName(Name);
+    return gv;
+  }
+  Value *CreateGlobalStringPtr(const char *Str = "", const char *Name = "") {
+    Value *gv = CreateGlobalString(Str, Name);
+    Value *zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0);
+    Value *Args[] = { zero, zero };
+    return CreateGEP(gv, Args, Args+2, Name);    
+  }
   //===--------------------------------------------------------------------===//
   // Instruction creation methods: Cast/Conversion Operators
   //===--------------------------------------------------------------------===//