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

Tobias Grosser tobias at grosser.es
Fri Jun 19 00:24:22 PDT 2015


On 06/19/2015 04:59 AM, Eric Christopher wrote:
> Unittest? :)

r240124.

Thanks for paying attention.

Tobias


> -eric
>
> On Thu, Jun 18, 2015 at 7:19 PM Tobias Grosser <tobias at grosser.es
> <mailto: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 <mailto:llvm-commits at cs.uiuc.edu>
>     http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list