[llvm] r240113 - IRBuilder: Allow globals to be constructed in a specific address space

Eric Christopher echristo at gmail.com
Thu Jun 18 19:59:36 PDT 2015


Unittest? :)

-eric

On Thu, Jun 18, 2015 at 7:19 PM Tobias Grosser <tobias at grosser.es> wrote:

> Author: grosser
> Date: Thu Jun 18 21:12:07 2015
> New Revision: 240113
>
> URL: http://llvm.org/viewvc/llvm-project?rev=240113&view=rev
> Log:
> IRBuilder: Allow globals to be constructed in a specific address space
>
> Modified:
>     llvm/trunk/include/llvm/IR/IRBuilder.h
>     llvm/trunk/lib/IR/IRBuilder.cpp
>
> Modified: llvm/trunk/include/llvm/IR/IRBuilder.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRBuilder.h?rev=240113&r1=240112&r2=240113&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/IR/IRBuilder.h (original)
> +++ llvm/trunk/include/llvm/IR/IRBuilder.h Thu Jun 18 21:12:07 2015
> @@ -245,7 +245,8 @@ public:
>    /// filled in with the null terminated string value specified.  The new
> global
>    /// variable will be marked mergable with any others of the same
> contents.  If
>    /// Name is specified, it is the name of the global variable created.
> -  GlobalVariable *CreateGlobalString(StringRef Str, const Twine &Name =
> "");
> +  GlobalVariable *CreateGlobalString(StringRef Str, const Twine &Name =
> "",
> +                                     unsigned AddressSpace = 0);
>
>    /// \brief Get a constant value representing either true or false.
>    ConstantInt *getInt1(bool V) {
> @@ -1191,8 +1192,9 @@ public:
>
>    /// \brief Same as CreateGlobalString, but return a pointer with "i8*"
> type
>    /// instead of a pointer to array of i8.
> -  Value *CreateGlobalStringPtr(StringRef Str, const Twine &Name = "") {
> -    GlobalVariable *gv = CreateGlobalString(Str, Name);
> +  Value *CreateGlobalStringPtr(StringRef Str, const Twine &Name = "",
> +                               unsigned AddressSpace = 0) {
> +    GlobalVariable *gv = CreateGlobalString(Str, Name, AddressSpace);
>      Value *zero = ConstantInt::get(Type::getInt32Ty(Context), 0);
>      Value *Args[] = { zero, zero };
>      return CreateInBoundsGEP(gv->getValueType(), gv, Args, Name);
>
> Modified: llvm/trunk/lib/IR/IRBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/IRBuilder.cpp?rev=240113&r1=240112&r2=240113&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/IR/IRBuilder.cpp (original)
> +++ llvm/trunk/lib/IR/IRBuilder.cpp Thu Jun 18 21:12:07 2015
> @@ -25,13 +25,15 @@ using namespace llvm;
>  /// specified.  If Name is specified, it is the name of the global
> variable
>  /// created.
>  GlobalVariable *IRBuilderBase::CreateGlobalString(StringRef Str,
> -                                                  const Twine &Name) {
> +                                                  const Twine &Name,
> +                                                  unsigned AddressSpace) {
>    Constant *StrConstant = ConstantDataArray::getString(Context, Str);
>    Module &M = *BB->getParent()->getParent();
>    GlobalVariable *GV = new GlobalVariable(M, StrConstant->getType(),
>                                            true,
> GlobalValue::PrivateLinkage,
> -                                          StrConstant);
> -  GV->setName(Name);
> +                                          StrConstant, Name, nullptr,
> +                                          GlobalVariable::NotThreadLocal,
> +                                          AddressSpace);
>    GV->setUnnamedAddr(true);
>    return GV;
>  }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150619/9a2d2da8/attachment.html>


More information about the llvm-commits mailing list