LLVM 22.0.0git
XCoreLowerThreadLocal.cpp File Reference

This file contains a pass that lowers thread local variables on the XCore. More...

#include "XCore.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsXCore.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "xcore-lower-thread-local"

Functions

 INITIALIZE_PASS (XCoreLowerThreadLocal, "xcore-lower-thread-local", "Lower thread local variables", false, false) ModulePass *llvm
static ArrayTypecreateLoweredType (Type *OriginalType)
static ConstantcreateLoweredInitializer (ArrayType *NewType, Constant *OriginalInitializer)
static bool replaceConstantExprOp (ConstantExpr *CE, Pass *P)
static bool rewriteNonInstructionUses (GlobalVariable *GV, Pass *P)
static bool isZeroLengthArray (Type *Ty)

Variables

static cl::opt< unsignedMaxThreads ("xcore-max-threads", cl::Optional, cl::desc("Maximum number of threads (for emulation thread-local storage)"), cl::Hidden, cl::value_desc("number"), cl::init(8))

Detailed Description

This file contains a pass that lowers thread local variables on the XCore.

Definition in file XCoreLowerThreadLocal.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "xcore-lower-thread-local"

Definition at line 28 of file XCoreLowerThreadLocal.cpp.

Function Documentation

◆ createLoweredInitializer()

Constant * createLoweredInitializer ( ArrayType * NewType,
Constant * OriginalInitializer )
static

Definition at line 66 of file XCoreLowerThreadLocal.cpp.

References llvm::ConstantArray::get(), and MaxThreads.

◆ createLoweredType()

ArrayType * createLoweredType ( Type * OriginalType)
static

Definition at line 61 of file XCoreLowerThreadLocal.cpp.

References llvm::ArrayType::get(), and MaxThreads.

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( XCoreLowerThreadLocal ,
"xcore-lower-thread-local" ,
"Lower thread local variables" ,
false ,
false  )

Definition at line 54 of file XCoreLowerThreadLocal.cpp.

References llvm::createXCoreLowerThreadLocalPass().

◆ isZeroLengthArray()

bool isZeroLengthArray ( Type * Ty)
static

Definition at line 124 of file XCoreLowerThreadLocal.cpp.

References llvm::dyn_cast().

◆ replaceConstantExprOp()

◆ rewriteNonInstructionUses()

Variable Documentation

◆ MaxThreads

cl::opt< unsigned > MaxThreads("xcore-max-threads", cl::Optional, cl::desc("Maximum number of threads (for emulation thread-local storage)"), cl::Hidden, cl::value_desc("number"), cl::init(8)) ( "xcore-max-threads" ,
cl::Optional ,
cl::desc("Maximum number of threads (for emulation thread-local storage)") ,
cl::Hidden ,
cl::value_desc("number") ,
cl::init(8)  )
static