search for: oldbb

Displaying 8 results from an estimated 8 matches for "oldbb".

Did you mean: oldmbb
2008 Nov 20
1
[LLVMdev] Problem in CodeExtractor::severSplitPHINodes()
...at the comment of BasicBlock::splitBasicBlock(), it says that "...an unconditional branch is added to the new BB, and the rest of the instructions in the BB are moved to the newBB, including the old terminator." So, the terminator of the newBB is exactly the same as the terminator of the oldBB. IF the oldBB has multiple successors, then newBB will have multiple successors. Actually there is an example for this (in "wc", the word count program): for (gotsp = 1; len = read(fd, buf, MAXBSIZE);){ if (len == -1) { perror(file); exit(1); } // do other stuff } Compile...
2015 Dec 07
4
[LLVMdev] Path forward on profile guided inlining?
...understand the part where you talk about adjusting the visit order to > minimize BFI computation. > > BFI computation: BFI for a function is computed on demand and cached. > > Update: When 'bar' gets inlined into 'foo', the BFI for 'foo' is updated. > Let OldBB in 'bar' gets cloned as NewBB in 'foo'. NewBB's block frequency > can be incrementally computed from OldBB's block frequency, entry block > frequency of 'bar' and the frequency of the block containing the 'foo' -> > 'bar' callsite. Even w...
2015 Dec 11
2
[LLVMdev] Path forward on profile guided inlining?
...after inlining is done for a node, the BFI info will be explicitly invalidated for that node due to the function passes run later by SCC pass manager. This is expected. >> >> Update: When 'bar' gets inlined into 'foo', the BFI for 'foo' is updated. >> Let OldBB in 'bar' gets cloned as NewBB in 'foo'. NewBB's block frequency >> can be incrementally computed from OldBB's block frequency, entry block >> frequency of 'bar' and the frequency of the block containing the 'foo' -> >> 'bar' call...
2015 Dec 11
5
[LLVMdev] Path forward on profile guided inlining?
...tention -- it can buy pass manager rework more time while unlock lots of pending performance tuning work we plan to do. thanks, David >> >>>> Update: When 'bar' gets inlined into 'foo', the BFI for 'foo' is >>>> updated. >>>> Let OldBB in 'bar' gets cloned as NewBB in 'foo'. NewBB's block >>>> frequency >>>> can be incrementally computed from OldBB's block frequency, entry block >>>> frequency of 'bar' and the frequency of the block containing the 'foo'...
2013 Jul 05
2
[LLVMdev] Any suggestion for "Unknown instruction type encountered" error?
...} void visitStoreInst(llvm::StoreInst & SI) { llvm::Value * Addr = SI.getOperand(1); llvm::PointerType* PTy = llvm::cast<llvm::PointerType>(Addr->getType()); llvm::Type * ElTy = PTy -> getElementType(); if (!ElTy->isPointerTy()) { llvm::BasicBlock *OldBB = SI.getParent(); llvm::errs() << "yes, got it \n"; llvm::ICmpInst *Cmp = new llvm::ICmpInst(&SI, llvm::CmpInst::ICMP_EQ, Addr, llvm::Constant::getNullValue(Addr->getType()), ""); llvm::Instruction *Iter = &SI; OldBB->getParent()-...
2008 Nov 20
0
[LLVMdev] Problem in CodeExtractor::severSplitPHINodes()
On Nov 19, 2008, at 7:41 AM, Jack Tzu-Han Hung wrote: > Hi, > > I found a problem in CodeExtractor::severSplitPHINodes() > <CodeExtractor.cpp>. > > The algorithm first separates the header block into two, one > containing only PHI nodes and the other containing the remaining non- > PHI nodes. The variable NewBB holds the pointer to the latter half > block.
2008 Nov 19
2
[LLVMdev] Problem in CodeExtractor::severSplitPHINodes()
Hi, I found a problem in CodeExtractor::severSplitPHINodes() <CodeExtractor.cpp>. The algorithm first separates the header block into two, one containing only PHI nodes and the other containing the remaining non-PHI nodes. The variable NewBB holds the pointer to the latter half block. Later, it tries to update DT information. if (DT) DT->splitBlock(NewBB); In splitBlock, it checks
2013 Jul 05
0
[LLVMdev] Any suggestion for "Unknown instruction type encountered" error?
...::StoreInst& SI) { > llvm::Value * Addr = SI.getOperand(1); > llvm::PointerType* PTy = llvm::cast<llvm::PointerType>(Addr->getType()); > llvm::Type * ElTy = PTy -> getElementType(); > if (!ElTy->isPointerTy()) { > llvm::BasicBlock *OldBB = SI.getParent(); > llvm::errs()<< "yes, got it \n"; > llvm::ICmpInst *Cmp = new llvm::ICmpInst(&SI, llvm::CmpInst::ICMP_EQ, Addr, llvm::Constant::getNullValue(Addr->getType()),""); > > llvm::Instruction *Iter =&SI; >...