Microsoft(TM) Visual Studio Code is an IDE that can use gdb as an integrated debugger but with a more intuitive user interface. The RpgDeclarationVisitor is responsible for processing the data declarations and populating the symbol table while the CodeVisitor creates the AST. References BB, DL, llvm::Module::getDataLayout(), llvm::BasicBlock::getModule(), llvm::Value::getType(), Insert(), and Ptr. Looking for RF electronics design references. Create a call to Masked Expand Load intrinsic Ty - vector type to load Ptr - base pointer for the load Mask - vector of booleans which indicates what vector lanes should be accessed in memory PassThru - pass-through value that is used to fill the masked-off lanes of the result Name - name of the result variable. Data - data to be stored, Ptrs - the vector of pointers, where the Data elements should be stored Align - alignment for one element Mask - vector of booleans which indicates what vector lanes should be accessed in memory. References CreateConstInBoundsGEP2_32(), and Ptr. Definition at line 1337 of file IRBuilder.h. Why does the sentence uses a question form, but it is put a period in the end? Definition at line 1310 of file IRBuilder.h. Definition at line 1284 of file IRBuilder.h. Create a SExt or Trunc from the integer value V to DestTy. Referenced by CreateMaximum(), CreateMaxNum(), CreateMinimum(), CreateMinNum(), llvm::InnerLoopVectorizer::emitIterationCountCheck(), and foldCttzCtlz(). Definition at line 2367 of file IRBuilder.h. The code Generator is the base class, declares a visit method, which takes the Node as an argument, for each subclass of Node. Download Source Artifacts Binary Artifacts For AlmaLinux For Amazon Linux For CentOS For C# For Debian For Python For Ubuntu Git tag Contributors This release includes 536 commits from 100 distinct contributors. For example take a look at the following code snippet : The processing of the parse tree is implemented within the parseSymbol method. Definition at line 1259 of file IRBuilder.h. Referenced by ClearInsertionPoint(), GetInsertPoint(), Insert(), SetInsertPoint(), and SetInsertPointPastAllocas(). Definition at line 326 of file IRBuilder.h. Definition at line 509 of file IRBuilder.h. Return a vector value that contains the vector V reversed. References CreateBinaryIntrinsic(), LHS, llvm::maxnum(), and RHS. References assert(), Context, llvm::VectorType::get(), llvm::PoisonValue::get(), llvm::Constant::getAllOnesValue(), llvm::Type::getInt1Ty(), getInt32(), llvm::Value::getType(), llvm::BitmaskEnumDetail::Mask(), and llvm::Align::value(). Create a call to the experimental.gc.relocate intrinsics to project the relocated value of one pointer from the statepoint. References llvm::AMDGPU::HSAMD::Kernel::Key::Args, assert(), BB, llvm::ArrayRef< T >::empty(), llvm::FunctionType::get(), llvm::Intrinsic::getDeclaration(), llvm::Intrinsic::getIntrinsicInfoTableEntries(), llvm::BasicBlock::getModule(), I, M, llvm::Intrinsic::matchIntrinsicSignature(), llvm::Intrinsic::MatchIntrinsicTypes_Match, and llvm::SmallVectorImpl< T >::reserve(). Create and insert a memset to the specified pointer and the specified value. Definition at line 344 of file IRBuilder.h. The body of the function is a llvm:BasicBlock where the non terminating instructions represent the logic of the code and the terminator instruction is the return instruction.A practical example of a function definition can be found when processing the SubroutineDeclaration node. The consent submitted will only be used for data processing originating from this website. Referenced by CreateFAddReduce(), createFFSIntrinsic(), CreateFMulReduce(), createPopcntIntrinsic(), CreateVScale(), llvm::orc::IRSpeculationLayer::emit(), llvm::VPWidenCallRecipe::execute(), llvm::VPLiveOut::fixPhi(), llvm::TargetLoweringBase::getDefaultSafeStackPointerLocation(), llvm::X86TargetLowering::getIRStackGuard(), llvm::TargetLoweringBase::getIRStackGuard(), llvm::VectorBuilder::getModule(), llvm::TargetLoweringBase::getSafeStackPointerLocation(), saveAndClearIP(), saveIP(), and UseTlsOffset(). How to get Pointer Type in Ascii format llvm? Definition at line 2075 of file IRBuilder.h. This specifies that created instructions should be inserted at the specified point. Create a conditional 'br Cond, TrueDest, FalseDest' instruction. References llvm::ResumeInst::Create(), and Insert(). References llvm::BinaryOperator::Create(), FMF, llvm::IRBuilderFolder::FoldBinOp(), Folder, Insert(), LHS, and RHS. Here we've declared a makeLLVMModule () function to do the real work of creating the module. Definition at line 1773 of file IRBuilder.h. References assert(), CreateOr(), llvm::ArrayRef< T >::empty(), i, and llvm::ArrayRef< T >::size(). An example of data being processed may be a unique identifier stored in a cookie. Create a switch instruction with the specified value, default dest, and with a hint for the number of cases that will be added (for efficient allocation). llvm example Wiki Glasgow Haskell Compiler / GHC GitLab Definition at line 1376 of file IRBuilder.h. References Context, and llvm::Type::getDoubleTy(). Definition at line 1250 of file IRBuilder.h. Fetch the type representing a 16-bit floating point value. Definition at line 1177 of file IRBuilder.cpp. Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. Return a boolean value testing if Arg > -1. The file hello.ll is the hello.c C program translated into the LLVM IR.It is possible to execute the IR running the lli which directly execute the IR. Create and insert an element unordered-atomic memcpy between the specified pointers. llc, the LLVM compiler, compiles LLVM bitcode to assembler code for a particular platform. Return a vector splice intrinsic if using scalable vectors, otherwise return a shufflevector. Definition at line 1246 of file IRBuilder.h. References Folder, llvm::IRBuilderFolder::FoldNoWrapBinOp(), LHS, Mul, and RHS. Fast math flags are unaffected by this setting. Fetch the type representing a 64-bit floating point value. Despite its name, LLVM has little to do with traditional virtual machines. Definition at line 1139 of file IRBuilder.h. Referenced by CreateCall(), CreateConstrainedFPBinOp(), CreateConstrainedFPCall(), CreateConstrainedFPCast(), CreateConstrainedFPCmp(), and CreateInvoke(). References Addr, llvm::IndirectBrInst::Create(), and Insert(). Referenced by CreateElementUnorderedAtomicMemSet(), CreateExtractElement(), CreateInsertElement(), CreateInvariantStart(), CreateLifetimeEnd(), CreateLifetimeStart(), CreateMemCpy(), CreateMemMove(), and CreateMemSet(). Definition at line 1968 of file IRBuilder.h. Fetch the type representing a 16-bit integer. Generating the machine code for a specific CPU model is a very complex task and requires a deep understanding about a lot of low level details of the instruction set. Definition at line 537 of file IRBuilder.h. Referenced by CreateCall(), and setDefaultOperandBundles(). Referenced by CreateIsNeg(), and getBoundsCheckCond(). The example above declares the NBR variable which is a scalar variable with 8 digits and 0 decimal. Definition at line 305 of file IRBuilder.h. References llvm::AMDGPU::HSAMD::Kernel::Key::Args, BB, llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getModule(), and M. Referenced by CreateArithmeticFence(), CreateConstrainedFPBinOp(), CreateConstrainedFPCast(), CreateConstrainedFPCmp(), CreateExtractVector(), CreateInsertVector(), CreateStepVector(), CreateThreadLocalAddress(), llvm::ARMTTIImpl::instCombineIntrinsic(), and lowerIntrinsicToFunction(). My array loc is just typed as Value* but in my case I'm sure that loc[n] here is a Constant* so getIntToPtr should work for me ? Definition at line 1699 of file IRBuilder.h. The compiler described in this project can generate the debug information using the debug option on the command line. Definition at line 1520 of file IRBuilder.h. Definition at line 929 of file IRBuilder.h. Definition at line 2350 of file IRBuilder.h. Definition at line 904 of file IRBuilder.cpp. Referenced by clearFastMathFlags(), CreateBinOp(), CreateCall(), CreateConstrainedFPBinOp(), CreateConstrainedFPCast(), CreateFAdd(), CreateFAddFMF(), CreateFDiv(), CreateFDivFMF(), CreateFMul(), CreateFMulFMF(), CreateFNeg(), CreateFNegFMF(), CreateFRem(), CreateFRemFMF(), CreateFSub(), CreateFSubFMF(), CreatePHI(), CreateSelect(), CreateUnOp(), getFastMathFlags(), and setFastMathFlags(). Inheritance diagram for llvm::IRBuilderBase: Collaboration diagram for llvm::IRBuilderBase: llvm::VPWidenPointerInductionRecipe::execute(), llvm::InnerLoopVectorizer::getOrCreateVectorTripCount(), llvm::ObjectSizeOffsetEvaluator::visitGEPOperator(), llvm::VPWidenMemoryInstructionRecipe::execute(), llvm::InnerLoopVectorizer::vectorizeInterleaveGroup(), llvm::InnerLoopVectorizer::emitIterationCountCheck(), llvm::VPWidenIntOrFpInductionRecipe::execute(), llvm::InnerLoopVectorizer::fixReduction(), llvm::X86TTIImpl::simplifyDemandedVectorEltsIntrinsic(), llvm::VNCoercion::coerceAvailableValueToLoadType(), optimizeVectorResizeWithIntegerBitCasts(), llvm::InnerLoopVectorizer::createBitOrPointerCast(), llvm::createSanitizerCtorAndInitFunctions(), llvm::VectorBuilder::createVectorInstruction(), llvm::TargetLoweringBase::getSafeStackPointerLocation(), buildPartialInvariantUnswitchConditionalBranch(), llvm::GetElementPtrInst::CreateInBounds(), llvm::IRBuilderFolder::FoldExtractElement(), llvm::InnerLoopVectorizer::fixFixedOrderRecurrence(), llvm::IRBuilderFolder::FoldExtractValue(), llvm::ConstantExpr::getInBoundsGetElementPtr(), llvm::EpilogueVectorizerMainLoop::emitIterationCountCheck(), llvm::EpilogueVectorizerEpilogueLoop::emitMinimumVectorEpilogueIterCountCheck(), llvm::InnerLoopVectorizer::packScalarIntoVectorValue(), llvm::IRBuilderFolder::FoldInsertElement(), llvm::Intrinsic::getIntrinsicInfoTableEntries(), llvm::Intrinsic::matchIntrinsicSignature(), llvm::Intrinsic::MatchIntrinsicTypes_Match, llvm::ObjectSizeOffsetEvaluator::visitAllocaInst(), llvm::ObjectSizeOffsetEvaluator::visitCallBase(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::ObjectSizeOffsetEvaluator::visitPHINode(), llvm::IRBuilderFolder::CreatePointerBitCastOrAddrSpaceCast(), llvm::CastInst::CreatePointerBitCastOrAddrSpaceCast(), llvm::IRBuilderFolder::CreatePointerCast(), llvm::GetElementPtrInst::getGEPReturnType(), llvm::ObjectSizeOffsetEvaluator::visitSelectInst(), llvm::IRBuilderFolder::CreateSExtOrBitCast(), llvm::IRBuilderFolder::FoldShuffleVector(), llvm::ShuffleVectorInst::getShuffleMask(), llvm::IRBuilderFolder::CreateTruncOrBitCast(), llvm::LinearPolySize< ElementCount >::getFixed(), llvm::InnerLoopVectorizer::getBroadcastInstrs(), llvm::IRBuilderFolder::CreateZExtOrBitCast(), llvm::InstrumentationIRBuilder::ensureDebugInfo(), llvm::TargetLoweringBase::getDefaultSafeStackPointerLocation(), llvm::X86TargetLowering::getIRStackGuard(), llvm::TargetLoweringBase::getIRStackGuard(), llvm::HexagonTargetLowering::LowerConstantPool(), llvm::InnerLoopVectorizer::createVectorLoopSkeleton(), llvm::IRBuilderDefaultInserter::InsertHelper(), llvm::InnerLoopVectorizer::scalarizeInstruction(), llvm::OpenMPIRBuilder::updateToLocation(), llvm::OpenMPIRBuilder::getInsertionPoint(), llvm::VPTransformState::setDebugLocFromInst(), llvm::InnerLoopVectorizer::fixNonInductionPHIs(), llvm::IRBuilder< InstSimplifyFolder, IRBuilderCallbackInserter >::IRBuilder(), llvm::BasicBlock::getFirstNonPHIOrDbgOrAlloca(). Site design / logo 2022 Stack Exchange Inc; user contributions licensed under CC BY-SA. There was an error submitting your subscription. Definition at line 1061 of file IRBuilder.h. References Folder, llvm::IRBuilderFolder::FoldICmp(), Insert(), LHS, P, and RHS. The LLVM backend takes in input a valid IR code and generates the optimized machine code simplifying the compiler implementation. References CreateCall(), llvm::Intrinsic::getDeclaration(), GetInsertBlock(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), and M. Definition at line 2219 of file IRBuilder.h. References CreateFCmp(), llvm::CmpInst::FCMP_UGT, LHS, and RHS. Conveninence function for the common case when CallArgs are filled in using makeArrayRef(CS.arg_begin(), CS.arg_end()); Create an invoke to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. To call theprintf function from the IR it is required to provide the function definition and provide the parameters required. References llvm::ShuffleVectorInst::getShuffleMask(), llvm::BitmaskEnumDetail::Mask(), and llvm::NVPTX::PTXLdStInstCode::V2. References assert(), llvm::sampleprof::Base, BB, CreateCall(), llvm::Intrinsic::getDeclaration(), getInt32(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), M, and llvm::Instruction::setMetadata(). Definition at line 138 of file IRBuilder.cpp. References CreateBinaryIntrinsic(), LHS, minimum, and RHS. Definition at line 625 of file IRBuilder.h. Fetch the type representing a 16-bit floating point value. During the declaration processing the RpgDeclarationVisitor class detects the data declaration, inspects the syntax tree and creates an instance of the symbol with the appropriate attributes. References BB, F, llvm::BasicBlock::getFirstNonPHIOrDbgOrAlloca(), and InsertPt. Referenced by buildUMulWithOverflowFunc(), and CreateIsNotNull(). llvm_parameter_value = builder->CreateLoad(llvm_parameter_value); Note: builder is the instance of the IRBuilder. The very last RPG statement is the RPG FOR loop which is represented by the ForStatement AST node. Definition at line 1153 of file IRBuilder.cpp. Definition at line 2563 of file IRBuilder.h. So in effect, what you're trying to generate is equivalent to this IR: But this is illegal since a constant expression, as hinted by its name, only supports constants, and %1 isn't a constant. To simplify the process, it would be possible to take advantage of the existing C/C++ libraries creating an interface for the functions that are common to both languages (i.e. Referenced by llvm::addDiffRuntimeChecks(), llvm::addRuntimeChecks(), buildPartialUnswitchConditionalBranch(), CreateOr(), getBoundsCheckCond(), lowerFunnelShifts(), and mergeConditionalStoreToAddress(). We and our partners use cookies to Store and/or access information on a device. References llvm::MCID::Add, Folder, llvm::IRBuilderFolder::FoldNoWrapBinOp(), LHS, and RHS. Definition at line 2269 of file IRBuilder.h. It also includes several batch files for experimenting with the LLVM infrastructure on a Windows machine. There are three main constructs required to work with the IR: llvm::Module, llvm::IRBuilder and llvm::Context. Provided to resolve 'CreateLoad(Ty, Ptr, "")' correctly, instead of converting the string to 'bool' for the isVolatile parameter. Create an assume intrinsic call that represents an alignment assumption on the provided pointer. Referenced by constructPointer(), createByteGEP(), createMemMoveLoop(), CreateStepVector(), getInt8(), and UseTlsOffset(). References assert(), CreateLShr(), CreateTrunc(), DL, From, and llvm::IntegerType::getBitWidth(). Definition at line 2391 of file IRBuilder.h. If the letter V occurs in a few native words, why isn't it included in the Irish Alphabet? Definition at line 474 of file IRBuilder.h. References ClearInsertionPoint(), GetInsertBlock(), and GetInsertPoint(). The LLVM API provides the methods to create and invoke functions defined within the module. The first template argument specifies a class to use for creating constants. Create and insert an element unordered-atomic memmove between the specified pointers. Definition at line 1453 of file IRBuilder.h. Get a constant value representing either true or false. References llvm::CleanupReturnInst::Create(), and Insert(). Create an indirect branch instruction with the specified address operand, with an optional hint for the number of destinations that will be added (for efficient allocation). Definition at line 1990 of file IRBuilder.h. Create a vector integer max reduction intrinsic of the source vector. References llvm::IRBuilderFolder::CreatePointerCast(), llvm::CastInst::CreatePointerCast(), Folder, llvm::Value::getType(), Insert(), and llvm::AArch64CC::VC. Definition at line 287 of file IRBuilder.h. Before proceeding, it is necessary to provide detail about the API available in LLVM to generate the IR. Return a value that has been extracted from a larger integer type. The frontend components are responsible for translating the source code into the Intermediate Representation (IR) which is the heart of the LLVM infrastructure. Create a ZExt or Trunc from the integer value V to DestTy. Writing a compiler, a software able to translate a high level human-readable code to an executable machine code, involves a lot of work. Create a vector float max reduction intrinsic of the source vector. A module contains things like global variables, function declarations, and implementations. [IRBuilder] Add type argument to CreateMaskedLoad/Gather Create a call to the experimental.gc.statepoint intrinsic to start a new statepoint sequence. The frontend parser in this project has been generated using ANTLR, starting from the open source grammar of the RPG language created by Ryan Eberly and available on Github as part of Jarikoproject. Create a vector int AND reduction intrinsic of the source vector. Enable/Disable use of constrained floating point math. LLVM doesn't require us to link in all the target functionality. Same as CreateGlobalString, but return a pointer with "i8*" type instead of a pointer to array of i8. Definition at line 2583 of file IRBuilder.h. References Arg, CreateICmpSGT(), and llvm::Constant::getAllOnesValue(). References llvm::AMDGPU::HSAMD::Kernel::Key::Args, Callee, llvm::CallInst::Create(), FMF, Insert(), IsFPConstrained, and setConstrainedFPCallAttr(). Referenced by llvm::createMemCpyLoopKnownSize(), createMemMoveLoop(), createMemSetLoop(), llvm::VPWidenPHIRecipe::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPActiveLaneMaskPHIRecipe::execute(), llvm::InnerLoopVectorizer::fixFixedOrderRecurrence(), and llvm::ObjectSizeOffsetEvaluator::visitPHINode(). Definition at line 1608 of file IRBuilder.h. In addition to the conditional branching it is required to generate the instructions required to increment the loop variable. Definition at line 1139 of file IRBuilder.cpp. The name "LLVM" itself is not an acronym; it is the full name of the project. LLVM: llvm::LoadInst Class Reference Definition at line 2525 of file IRBuilder.h. This specifies that created instructions should be appended to the end of the specified block. Insert and return the specified instruction. llvm Codegen - When enabled the CreateF() calls instead create constrained floating point intrinsic calls. References BB, CreateCall(), llvm::Intrinsic::getDeclaration(), getInt1(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), M, Ptr, and llvm::Instruction::setMetadata(). Definition at line 2323 of file IRBuilder.h. This design decision allows tomaintain two separated visitor subclasses with a well defined behaviour. Class/Type: Value. Value, LLVM C# (CSharp) Code Examples - HotExamples You can rate examples to help us improve the quality of examples. References llvm::BranchInst::Create(), and Insert(). References BB, CreateCall(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), llvm::Value::getType(), and M. Create a call to the experimental.gc.get.pointer.offset intrinsic to get the offset of the specified derived pointer from its base. Create and insert a memcpy between the specified pointers. Referenced by doPromotion(), and simplifyAllocaArraySize(). LLVM C++ Library: allocate, store and load - Medium Clear the insertion point: created instructions will not be inserted into a block. Create a vector int XOR reduction intrinsic of the source vector. These are the top rated real world C++ (Cpp) examples of IRBuilder::CreateCall extracted from open source projects. Definition at line 1614 of file IRBuilder.h. By leveraging LLVM it is possible to build industrial-grade compilers with a limited investment. Referenced by CreateCmp(), CreateICmpEQ(), CreateICmpNE(), CreateICmpSGE(), CreateICmpSGT(), CreateICmpSLE(), CreateICmpSLT(), CreateICmpUGE(), CreateICmpUGT(), CreateICmpULE(), CreateICmpULT(), llvm::InnerLoopVectorizer::emitIterationCountCheck(), llvm::EpilogueVectorizerMainLoop::emitIterationCountCheck(), llvm::EpilogueVectorizerEpilogueLoop::emitMinimumVectorEpilogueIterCountCheck(), ReduceLoopStrength(), and llvm::UnrollRuntimeLoopRemainder(). The second template argument allows clients to specify custom insertion hooks that are called on every newly created insertion. Referenced by CreateAlignmentAssumption(). The LLVM project is released under the Apache License v2.0 (with some exceptions) which allows to include the software as part of commercial products. Definition at line 1893 of file IRBuilder.h. The SELECT statement is a little bit more complicated and gives the opportunity to explore additional functionality of the LLVM API where conditional branching is involved. Referenced by llvm::VNCoercion::coerceAvailableValueToLoadType(), and CreateBitOrPointerCast(). Now the llvm_parameter_value contains actual value. Whether a signed or unsigned interpretation is desired is specified in the instruction. Although the Symbol Table structure is able to represent the typical RPG data declaration and LLVM provides support for fixed point arithmetic and data types for the scope of this project only the 64 bits integer type is supported. func (c *Codegen) stdString() { tmpl := &Template{ Type: llvm.GlobalContext().StructCreateNamed("string"), Variables: map[string]int{}, } c.templates["string"] = tmpl . Definition at line 522 of file IRBuilder.h. Contribute to tetzank/llvm-jit-example development by creating an account on GitHub. Referenced by llvm::X86TTIImpl::instCombineIntrinsic(). Definition at line 1768 of file IRBuilder.h. Golang Int1Type - 11 examples found. Definition at line 577 of file IRBuilder.h. Definition at line 999 of file IRBuilder.cpp. Definition at line 557 of file IRBuilder.h. Definition at line 1323 of file IRBuilder.cpp. Its designed to be very modular and supports all the compilation phases including frontend processing, code generation, optimization, and so forth. Create a call to the arithmetic_fence intrinsic. Definition at line 2031 of file IRBuilder.h. However by using the LLVM we will obtain two main benefits: More in details, LLVM provides an infrastructure that simplifies this process providing tools and APIs to write a compiler for an existing language or to implement a brand new programming language. Referenced by appendToGlobalArray(), CreateElementUnorderedAtomicMemCpy(), CreateElementUnorderedAtomicMemMove(), CreateElementUnorderedAtomicMemSet(), CreateGCRelocate(), CreateMaskedGather(), CreateMaskedLoad(), CreateMaskedScatter(), CreateMaskedStore(), createOrdering(), CreatePreserveArrayAccessIndex(), CreatePreserveStructAccessIndex(), CreatePreserveUnionAccessIndex(), CreateVectorSplice(), llvm::VPBranchOnMaskRecipe::execute(), llvm::VPWidenMemoryInstructionRecipe::execute(), foldVecTruncToExtElt(), llvm::PPCTTIImpl::instCombineIntrinsic(), nullifySetjmp(), optimizeIntegerToVectorInsertions(), simplifyAllocaArraySize(), and llvm::InnerLoopVectorizer::vectorizeInterleaveGroup(). Definition at line 993 of file IRBuilder.h. 195 // The block might do extra work besides the atom comparison, in which case: 196 // doesOt References Context, and llvm::ConstantInt::get(). References CreateExtractElement(), and getInt64(). Part 5: A tutorial on liveness and alias dataflow analysis. An optional offset can be provided, and if it is provided, the offset must be subtracted from the provided pointer to get the pointer with the specified alignment. For example, to build a library named libsample.a, LIBRARYNAME should be set to sample. References llvm::FastMathFlags::clear(), and FMF. These are the top rated real world C++ (Cpp) examples of IRBuilder::CreateLoad extracted from open source projects. LLVM get constant integer back from Value*, What exactly PHI instruction does and how to use it in LLVM, inserting a function call after the current instruction using LLVM, Getting the original variable name for an LLVM Value, llvm irbuilder call instruction throwing exception on function inlining pass.