Home | History | Annotate | Download | only in slang

Lines Matching full:llvm

25 #include "llvm/ADT/Twine.h"
26 #include "llvm/ADT/StringExtras.h"
28 #include "llvm/IR/Constant.h"
29 #include "llvm/IR/Constants.h"
30 #include "llvm/IR/DerivedTypes.h"
31 #include "llvm/IR/Function.h"
32 #include "llvm/IR/IRBuilder.h"
33 #include "llvm/IR/Metadata.h"
34 #include "llvm/IR/Module.h"
36 #include "llvm/IR/DebugLoc.h"
54 llvm::raw_ostream *OS,
90 clang::FunctionDecl *FD = llvm::dyn_cast<clang::FunctionDecl>(*I);
105 clang::FunctionDecl *FD = llvm::dyn_cast<clang::FunctionDecl>(*I);
174 clang::FunctionDecl *FD = llvm::dyn_cast<clang::FunctionDecl>(*I);
183 void RSBackend::dumpExportVarInfo(llvm::Module *M) {
188 llvm::SmallVector<llvm::Value*, 2> ExportVarInfo;
203 llvm::MDString::get(mLLVMContext, EV->getName().c_str()));
211 llvm::MDString::get(
212 mLLVMContext, llvm::utostr_32(PT->getType())));
220 llvm::MDString::get(
227 llvm::MDString::get(
228 mLLVMContext, llvm::utostr_32(
244 llvm::MDString::get(mLLVMContext,
251 llvm::MDNode::get(mLLVMContext, ExportVarInfo));
260 mRSObjectSlotsMetadata->addOperand(llvm::MDNode::get(mLLVMContext,
261 llvm::MDString::get(mLLVMContext, llvm::utostr_32(slotCount))));
268 void RSBackend::dumpExportFunctionInfo(llvm::Module *M) {
273 llvm::SmallVector<llvm::Value*, 1> ExportFuncInfo;
284 ExportFuncInfo.push_back(llvm::MDString::get(mLLVMContext,
287 llvm::Function *F = M->getFunction(EF->getName());
288 llvm::Function *HelperFunction;
295 llvm::StructType *HelperFunctionParameterTy = NULL;
298 std::vector<llvm::Type*> HelperFunctionParameterTys;
299 for (llvm::Function::arg_iterator AI = F->arg_begin(),
310 llvm::StructType::get(mLLVMContext, HelperFunctionParameterTys);
329 std::vector<llvm::Type*> Params;
331 llvm::PointerType *HelperFunctionParameterTyP =
332 llvm::PointerType::getUnqual(HelperFunctionParameterTy);
336 llvm::FunctionType * HelperFunctionType =
337 llvm::FunctionType::get(F->getReturnType(),
342 llvm::Function::Create(HelperFunctionType,
343 llvm::GlobalValue::ExternalLinkage,
347 HelperFunction->addFnAttr(llvm::Attribute::NoInline);
352 llvm::Argument *HelperFunctionParameter =
354 llvm::BasicBlock *BB =
355 llvm::BasicBlock::Create(mLLVMContext, "entry", HelperFunction);
356 llvm::IRBuilder<> *IB = new llvm::IRBuilder<>(BB);
357 llvm::SmallVector<llvm::Value*, 6> Params;
358 llvm::Value *Idx[2];
361 llvm::ConstantInt::get(llvm::Type::getInt32Ty(mLLVMContext), 0);
367 Idx[1] = llvm::ConstantInt::get(
368 llvm::Type::getInt32Ty(mLLVMContext), i);
370 llvm::Value *Ptr = NULL;
378 llvm::Value *V = IB->CreateLoad(Ptr);
384 llvm::CallInst *CI = IB->CreateCall(F, Params);
388 if (F->getReturnType() == llvm::Type::getVoidTy(mLLVMContext))
398 llvm::MDString::get(mLLVMContext, HelperFunctionName.c_str()));
402 llvm::MDNode::get(mLLVMContext, ExportFuncInfo));
407 void RSBackend::dumpExportForEachInfo(llvm::Module *M) {
417 llvm::SmallVector<llvm::Value*, 1> ExportForEachName;
418 llvm::SmallVector<llvm::Value*, 1> ExportForEachInfo;
428 llvm::MDString::get(mLLVMContext, EFE->getName().c_str()));
431 llvm::MDNode::get(mLLVMContext, ExportForEachName));
435 llvm::MDString::get(mLLVMContext,
436 llvm::utostr_32(EFE->getSignatureMetadata())));
439 llvm::MDNode::get(mLLVMContext, ExportForEachInfo));
444 void RSBackend::dumpExportTypeInfo(llvm::Module *M) {
445 llvm::SmallVector<llvm::Value*, 1> ExportTypeInfo;
458 llvm::MDString::get(mLLVMContext, ET->getName().c_str()));
469 llvm::MDNode::get(mLLVMContext, ExportTypeInfo));
474 llvm::NamedMDNode *StructInfoMetadata =
476 llvm::SmallVector<llvm::Value*, 3> FieldInfo;
487 FieldInfo.push_back(llvm::MDString::get(mLLVMContext,
492 llvm::MDString::get(mLLVMContext,
496 llvm::MDNode::get(mLLVMContext, FieldInfo));
503 void RSBackend::HandleTranslationUnitPost(llvm::Module *M) {