Lines Matching refs:llvm
82 class VersionInfoPass : public llvm::ModulePass {
95 virtual bool runOnModule(llvm::Module &M) override { in runOnModule()
101 auto ver = llvm::MDString::get(ctx, versionString); in runOnModule()
103 llvm::MDNode::get(ctx, llvm::ArrayRef<llvm::Metadata *>(ver))); in runOnModule()
110 llvm::ModulePass *createVersionInfoPass(const clang::CodeGenOptions &cgo) { in createVersionInfoPass()
119 mPerFunctionPasses = new llvm::legacy::FunctionPassManager(mpModule); in CreateFunctionPasses()
121 llvm::PassManagerBuilder PMBuilder; in CreateFunctionPasses()
129 mPerModulePasses = new llvm::legacy::PassManager(); in CreateModulePasses()
131 llvm::PassManagerBuilder PMBuilder; in CreateModulePasses()
161 mCodeGenPasses = new llvm::legacy::FunctionPassManager(mpModule); in CreateCodeGenPasses()
168 const llvm::Target* TargetInfo = in CreateCodeGenPasses()
169 llvm::TargetRegistry::lookupTarget(Triple, Error); in CreateCodeGenPasses()
176 llvm::TargetOptions Options; in CreateCodeGenPasses()
181 Options.FloatABIType = llvm::FloatABI::Soft; in CreateCodeGenPasses()
185 llvm::Reloc::Model RM = llvm::Reloc::Static; in CreateCodeGenPasses()
189 llvm::CodeModel::Model CM; in CreateCodeGenPasses()
191 CM = llvm::CodeModel::Small; in CreateCodeGenPasses()
195 CM = llvm::CodeModel::Medium; in CreateCodeGenPasses()
201 llvm::SubtargetFeatures Features; in CreateCodeGenPasses()
212 llvm::TargetMachine *TM = in CreateCodeGenPasses()
219 llvm::RegisterRegAlloc::setDefault((mCodeGenOpts.OptimizationLevel == 0) ? in CreateCodeGenPasses()
220 llvm::createFastRegisterAllocator : in CreateCodeGenPasses()
221 llvm::createGreedyRegisterAllocator); in CreateCodeGenPasses()
223 llvm::CodeGenOpt::Level OptLevel = llvm::CodeGenOpt::Default; in CreateCodeGenPasses()
225 OptLevel = llvm::CodeGenOpt::None; in CreateCodeGenPasses()
227 OptLevel = llvm::CodeGenOpt::Aggressive; in CreateCodeGenPasses()
230 llvm::TargetMachine::CodeGenFileType CGFT = in CreateCodeGenPasses()
231 llvm::TargetMachine::CGFT_AssemblyFile; in CreateCodeGenPasses()
233 CGFT = llvm::TargetMachine::CGFT_ObjectFile; in CreateCodeGenPasses()
250 llvm::raw_ostream *OS, Slang::OutputType OT, in Backend()
294 llvm::Module *M = mGen->ReleaseModule(); in HandleTranslationUnit()
306 llvm::NamedMDNode *PragmaMetadata = in HandleTranslationUnit()
311 llvm::SmallVector<llvm::Metadata*, 2> Pragma; in HandleTranslationUnit()
313 Pragma.push_back(llvm::MDString::get(mLLVMContext, I->first)); in HandleTranslationUnit()
315 Pragma.push_back(llvm::MDString::get(mLLVMContext, I->second)); in HandleTranslationUnit()
319 llvm::MDNode::get(mLLVMContext, Pragma)); in HandleTranslationUnit()
332 for (llvm::Module::iterator I = mpModule->begin(), E = mpModule->end(); in HandleTranslationUnit()
354 for (llvm::Module::iterator I = mpModule->begin(), E = mpModule->end(); in HandleTranslationUnit()
364 llvm::legacy::PassManager *LLEmitPM = new llvm::legacy::PassManager(); in HandleTranslationUnit()
365 LLEmitPM->add(llvm::createPrintModulePass(mBufferOutStream)); in HandleTranslationUnit()
536 llvm::APInt(sizeof(info.first) << 3, info.first), in PadStruct()
568 PadStruct(llvm::cast<clang::RecordDecl>(D)); in HandleTagDeclDefinition()
619 if (clang::TypeDecl* TD = llvm::dyn_cast<clang::TypeDecl>(*I)) { in HandleTopLevelDecl()
634 clang::FunctionDecl *FD = llvm::dyn_cast<clang::FunctionDecl>(*I); in HandleTopLevelDecl()
648 clang::FunctionDecl *FD = llvm::dyn_cast<clang::FunctionDecl>(*I); in HandleTopLevelDecl()
741 clang::FunctionDecl *FD = llvm::dyn_cast<clang::FunctionDecl>(*I); in HandleTranslationUnitPre()
750 void Backend::dumpExportVarInfo(llvm::Module *M) { in dumpExportVarInfo()
755 llvm::SmallVector<llvm::Metadata *, 2> ExportVarInfo; in dumpExportVarInfo()
770 llvm::MDString::get(mLLVMContext, EV->getName().c_str())); in dumpExportVarInfo()
778 llvm::MDString::get( in dumpExportVarInfo()
779 mLLVMContext, llvm::utostr(PT->getType()))); in dumpExportVarInfo()
787 llvm::MDString::get( in dumpExportVarInfo()
794 llvm::MDString::get( in dumpExportVarInfo()
795 mLLVMContext, llvm::utostr( in dumpExportVarInfo()
811 llvm::MDString::get(mLLVMContext, in dumpExportVarInfo()
818 llvm::MDNode::get(mLLVMContext, ExportVarInfo)); in dumpExportVarInfo()
827 mRSObjectSlotsMetadata->addOperand(llvm::MDNode::get(mLLVMContext, in dumpExportVarInfo()
828 llvm::MDString::get(mLLVMContext, llvm::utostr(slotCount)))); in dumpExportVarInfo()
836 static void PadHelperFunctionStruct(llvm::Module *M, in PadHelperFunctionStruct()
837 llvm::StructType **paddedStructType, in PadHelperFunctionStruct()
839 llvm::StructType *origStructType) { in PadHelperFunctionStruct()
843 llvm::LLVMContext &llvmContext = M->getContext(); in PadHelperFunctionStruct()
845 const llvm::DataLayout *DL = &M->getDataLayout(); in PadHelperFunctionStruct()
846 const llvm::StructLayout *SL = DL->getStructLayout(origStructType); in PadHelperFunctionStruct()
849 std::vector<llvm::Type *> paddedFieldTypes; in PadHelperFunctionStruct()
855 llvm::Type *const byteType = llvm::Type::getInt8Ty(llvmContext); in PadHelperFunctionStruct()
858 for (llvm::Type *fieldType : origStructType->elements()) { in PadHelperFunctionStruct()
863 paddedFieldTypes.push_back(llvm::ArrayType::get(byteType, prePadding)); in PadHelperFunctionStruct()
882 paddedFieldTypes.push_back(llvm::ArrayType::get(byteType, tailPadding)); in PadHelperFunctionStruct()
886 ? llvm::StructType::get(llvmContext, paddedFieldTypes) in PadHelperFunctionStruct()
890 void Backend::dumpExportFunctionInfo(llvm::Module *M) { in dumpExportFunctionInfo()
895 llvm::SmallVector<llvm::Metadata *, 1> ExportFuncInfo; in dumpExportFunctionInfo()
906 ExportFuncInfo.push_back(llvm::MDString::get(mLLVMContext, in dumpExportFunctionInfo()
909 llvm::Function *F = M->getFunction(EF->getName()); in dumpExportFunctionInfo()
910 llvm::Function *HelperFunction; in dumpExportFunctionInfo()
917 llvm::StructType *OrigHelperFunctionParameterTy = nullptr; in dumpExportFunctionInfo()
918 llvm::StructType *PaddedHelperFunctionParameterTy = nullptr; in dumpExportFunctionInfo()
924 std::vector<llvm::Type*> HelperFunctionParameterTys; in dumpExportFunctionInfo()
925 for (llvm::Function::arg_iterator AI = F->arg_begin(), in dumpExportFunctionInfo()
937 llvm::Type *Ty = AI->getType(); in dumpExportFunctionInfo()
948 llvm::StructType::get(mLLVMContext, HelperFunctionParameterTys); in dumpExportFunctionInfo()
971 std::vector<llvm::Type*> Params; in dumpExportFunctionInfo()
973 llvm::PointerType *HelperFunctionParameterTyP = in dumpExportFunctionInfo()
974 llvm::PointerType::getUnqual(PaddedHelperFunctionParameterTy); in dumpExportFunctionInfo()
978 llvm::FunctionType * HelperFunctionType = in dumpExportFunctionInfo()
979 llvm::FunctionType::get(F->getReturnType(), in dumpExportFunctionInfo()
984 llvm::Function::Create(HelperFunctionType, in dumpExportFunctionInfo()
985 llvm::GlobalValue::ExternalLinkage, in dumpExportFunctionInfo()
989 HelperFunction->addFnAttr(llvm::Attribute::NoInline); in dumpExportFunctionInfo()
994 llvm::Argument *HelperFunctionParameter = in dumpExportFunctionInfo()
996 llvm::BasicBlock *BB = in dumpExportFunctionInfo()
997 llvm::BasicBlock::Create(mLLVMContext, "entry", HelperFunction); in dumpExportFunctionInfo()
998 llvm::IRBuilder<> *IB = new llvm::IRBuilder<>(BB); in dumpExportFunctionInfo()
999 llvm::SmallVector<llvm::Value*, 6> Params; in dumpExportFunctionInfo()
1000 llvm::Value *Idx[2]; in dumpExportFunctionInfo()
1003 llvm::ConstantInt::get(llvm::Type::getInt32Ty(mLLVMContext), 0); in dumpExportFunctionInfo()
1009 Idx[1] = llvm::ConstantInt::get( in dumpExportFunctionInfo()
1010 llvm::Type::getInt32Ty(mLLVMContext), OrigFieldNumToPaddedFieldNum[origFieldNum]); in dumpExportFunctionInfo()
1012 llvm::Value *Ptr = NULL; in dumpExportFunctionInfo()
1020 llvm::Value *V = IB->CreateLoad(Ptr); in dumpExportFunctionInfo()
1026 llvm::CallInst *CI = IB->CreateCall(F, Params); in dumpExportFunctionInfo()
1030 if (F->getReturnType() == llvm::Type::getVoidTy(mLLVMContext)) { in dumpExportFunctionInfo()
1041 llvm::MDString::get(mLLVMContext, HelperFunctionName.c_str())); in dumpExportFunctionInfo()
1045 llvm::MDNode::get(mLLVMContext, ExportFuncInfo)); in dumpExportFunctionInfo()
1050 void Backend::dumpExportForEachInfo(llvm::Module *M) { in dumpExportForEachInfo()
1060 llvm::SmallVector<llvm::Metadata *, 1> ExportForEachName; in dumpExportForEachInfo()
1061 llvm::SmallVector<llvm::Metadata *, 1> ExportForEachInfo; in dumpExportForEachInfo()
1071 llvm::MDString::get(mLLVMContext, EFE->getName().c_str())); in dumpExportForEachInfo()
1074 llvm::MDNode::get(mLLVMContext, ExportForEachName)); in dumpExportForEachInfo()
1078 llvm::MDString::get(mLLVMContext, in dumpExportForEachInfo()
1079 llvm::utostr(EFE->getSignatureMetadata()))); in dumpExportForEachInfo()
1082 llvm::MDNode::get(mLLVMContext, ExportForEachInfo)); in dumpExportForEachInfo()
1087 void Backend::dumpExportReduceInfo(llvm::Module *M) { in dumpExportReduceInfo()
1093 llvm::SmallVector<llvm::Metadata *, 6> ExportReduceInfo; in dumpExportReduceInfo()
1096 auto addOperand = [&ExportReduceInfo](uint32_t Idx, llvm::Metadata *N) { in dumpExportReduceInfo()
1107 addOperand(Idx, llvm::MDString::get(mLLVMContext, S)); in dumpExportReduceInfo()
1120 …addOperand(Idx++, llvm::MDString::get(mLLVMContext, llvm::utostr((*I)->getAccumulatorTypeSize()))); in dumpExportReduceInfo()
1122 llvm::SmallVector<llvm::Metadata *, 2> Accumulator; in dumpExportReduceInfo()
1124 llvm::MDString::get(mLLVMContext, (*I)->getNameAccumulator())); in dumpExportReduceInfo()
1125 Accumulator.push_back(llvm::MDString::get( in dumpExportReduceInfo()
1127 llvm::utostr((*I)->getAccumulatorSignatureMetadata()))); in dumpExportReduceInfo()
1128 addOperand(Idx++, llvm::MDTuple::get(mLLVMContext, Accumulator)); in dumpExportReduceInfo()
1136 llvm::MDTuple::get(mLLVMContext, ExportReduceInfo)); in dumpExportReduceInfo()
1140 void Backend::dumpExportTypeInfo(llvm::Module *M) { in dumpExportTypeInfo()
1141 llvm::SmallVector<llvm::Metadata *, 1> ExportTypeInfo; in dumpExportTypeInfo()
1154 llvm::MDString::get(mLLVMContext, ET->getName().c_str())); in dumpExportTypeInfo()
1165 llvm::MDNode::get(mLLVMContext, ExportTypeInfo)); in dumpExportTypeInfo()
1170 llvm::NamedMDNode *StructInfoMetadata = in dumpExportTypeInfo()
1172 llvm::SmallVector<llvm::Metadata *, 3> FieldInfo; in dumpExportTypeInfo()
1183 FieldInfo.push_back(llvm::MDString::get(mLLVMContext, in dumpExportTypeInfo()
1188 llvm::MDString::get(mLLVMContext, in dumpExportTypeInfo()
1192 llvm::MDNode::get(mLLVMContext, FieldInfo)); in dumpExportTypeInfo()
1199 void Backend::HandleTranslationUnitPost(llvm::Module *M) { in HandleTranslationUnitPost()