LLVM API Documentation
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/Module.h"
#include "llvm/IR/NoFolder.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.
Defines | |
#define | DEBUG_TYPE "xcore-lower-thread-local" |
Functions | |
INITIALIZE_PASS (XCoreLowerThreadLocal,"xcore-lower-thread-local","Lower thread local variables", false, false) ModulePass *llvm | |
static ArrayType * | createLoweredType (Type *OriginalType) |
static Constant * | createLoweredInitializer (ArrayType *NewType, Constant *OriginalInitializer) |
static Instruction * | createReplacementInstr (ConstantExpr *CE, Instruction *Instr) |
static bool | replaceConstantExprOp (ConstantExpr *CE, Pass *P) |
static bool | rewriteNonInstructionUses (GlobalVariable *GV, Pass *P) |
static bool | isZeroLengthArray (Type *Ty) |
Variables | |
static 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)) |
This file contains a pass that lowers thread local variables on the XCore.
Definition in file XCoreLowerThreadLocal.cpp.
#define DEBUG_TYPE "xcore-lower-thread-local" |
Definition at line 29 of file XCoreLowerThreadLocal.cpp.
static Constant* createLoweredInitializer | ( | ArrayType * | NewType, |
Constant * | OriginalInitializer | ||
) | [static] |
Definition at line 69 of file XCoreLowerThreadLocal.cpp.
References llvm::ConstantArray::get(), and MaxThreads.
static ArrayType* createLoweredType | ( | Type * | OriginalType | ) | [static] |
Definition at line 64 of file XCoreLowerThreadLocal.cpp.
References llvm::ArrayType::get(), and MaxThreads.
static Instruction* createReplacementInstr | ( | ConstantExpr * | CE, |
Instruction * | Instr | ||
) | [static] |
Definition at line 78 of file XCoreLowerThreadLocal.cpp.
References llvm::APIntOps::And(), llvm::IRBuilder< preserveNames, T, Inserter >::CreateBinOp(), llvm::IRBuilder< preserveNames, T, Inserter >::CreateCast(), llvm::IRBuilder< preserveNames, T, Inserter >::CreateInBoundsGEP(), llvm::dyn_cast(), llvm::FPExt, llvm::FPToSI, llvm::Value::getName(), llvm::ConstantExpr::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), llvm::IntToPtr, llvm_unreachable, llvm::LShr, llvm::User::op_begin(), llvm::User::op_end(), llvm::APIntOps::Or(), llvm::SExt, llvm::SIToFP, llvm::Trunc, and llvm::APIntOps::Xor().
Referenced by replaceConstantExprOp().
INITIALIZE_PASS | ( | XCoreLowerThreadLocal | , |
"xcore-lower-thread-local" | , | ||
"Lower thread local variables" | , | ||
false | , | ||
false | |||
) |
Definition at line 57 of file XCoreLowerThreadLocal.cpp.
static bool isZeroLengthArray | ( | Type * | Ty | ) | [static] |
Definition at line 174 of file XCoreLowerThreadLocal.cpp.
References llvm::dyn_cast(), and llvm::ArrayType::getNumElements().
static bool replaceConstantExprOp | ( | ConstantExpr * | CE, |
Pass * | P | ||
) | [static] |
Definition at line 128 of file XCoreLowerThreadLocal.cpp.
References llvm::WinEH::CE, createReplacementInstr(), llvm::ConstantExpr::destroyConstant(), llvm::dyn_cast(), llvm::SmallVectorImpl< T >::erase(), llvm::TerminatorInst::getNumSuccessors(), llvm::BasicBlock::getParent(), llvm::BasicBlock::getTerminator(), llvm::Value::hasNUsesOrMore(), I, llvm::SplitEdge(), llvm::Value::user_begin(), and llvm::Value::user_end().
Referenced by rewriteNonInstructionUses().
static bool rewriteNonInstructionUses | ( | GlobalVariable * | GV, |
Pass * | P | ||
) | [static] |
Definition at line 160 of file XCoreLowerThreadLocal.cpp.
References llvm::WinEH::CE, llvm::dyn_cast(), llvm::SmallVectorBase::empty(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), replaceConstantExprOp(), and llvm::Value::users().
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)) [static] |
Referenced by createLoweredInitializer(), and createLoweredType().