search for: getexitblock

Displaying 15 results from an estimated 15 matches for "getexitblock".

Did you mean: getexitblocks
2012 Apr 20
2
[LLVMdev] Should repetitive basic blocks be removed in the results of LoopBase::getExitBlocks()?
Hi, all. I'm using void LoopBase::getExitBlocks (SmallVectorImpl< BlockT * > &ExitBlocks) const to get all exit blocks for a loop. The problem I find with this API is that it returns repetitive basic blocks in certain situations. Should repetitive basic blocks be removed? I have an example to show the problem. Following is the source...
2009 Nov 20
1
[LLVMdev] getExitBlocks returns duplicates in result vector
Hi, LoopBase::getExitBlocks in LoopInfo.h returns all exit basic blocks by iterating over all blocks of a loop and storing all branch targets that are outside the loop. This method allows for duplicates in the result vector, e.g.: Loop at depth 2 containing: %bb2<header><exit>,%bb1<latch>,%bb3<exit>...
2012 Apr 24
0
[LLVMdev] Should repetitive basic blocks be removed in the results of LoopBase::getExitBlocks()?
On Apr 19, 2012, at 10:43 PM, xiaoming gu <xiaoming.gu at gmail.com> wrote: > Hi, all. I'm using void LoopBase::getExitBlocks (SmallVectorImpl< BlockT * > &ExitBlocks) const to get all > exit blocks for a loop. The problem I find with this API is that it returns repetitive basic blocks in certain > situations. Should repetitive basic blocks be removed? Users generally expect a unique set of exit blocks...
2012 Apr 24
2
[LLVMdev] Should repetitive basic blocks be removed in the results of LoopBase::getExitBlocks()?
On Apr 23, 2012, at 10:31 PM, Andrew Trick <atrick at apple.com> wrote: > > On Apr 19, 2012, at 10:43 PM, xiaoming gu <xiaoming.gu at gmail.com> wrote: > >> Hi, all. I'm using void LoopBase::getExitBlocks (SmallVectorImpl< BlockT * > &ExitBlocks) const to get all >> exit blocks for a loop. The problem I find with this API is that it returns repetitive basic blocks in certain >> situations. Should repetitive basic blocks be removed? > > Users generally expect a unique...
2012 Apr 24
0
[LLVMdev] Should repetitive basic blocks be removed in the results of LoopBase::getExitBlocks()?
hi, > Users generally expect a unique set of exit blocks, but don't make any > strong assumption. The worst that can happen is missed optimization or > redundant analysis. In most cases, the loop is in LoopSimplifyForm, so it's > probably not a problem in practice. > > > Another thing I should mention. The iteration order of ExitBlocks is > important. In llvm,
2019 Oct 30
2
How to make ScalarEvolution recompute SCEV values?
...opPreheader(); // keep track of the original predecessors std::set<BasicBlock *> AllPredecessors; for (auto PredIt = pred_begin(PreHeader), E = pred_end(PreHeader); PredIt != E; PredIt++) AllPredecessors.insert(*PredIt); BasicBlock *ExitBlock = L->getExitBlock(); auto DT = DominatorTree(*F); SmallVector<BasicBlock *, 8> Blocks; const auto ClonedLoop = cloneLoopWithPreheader(PreHeader, PreHeader, L, VMap, NameSuffix, LI, &DT, Blocks); VMap[ExitBlock] = PreHeader; // chain: cloned loop -> original loop remapInstru...
2010 Jan 08
1
[LLVMdev] integrate LLVM Poly into existing LLVM infrastructure
...loop and a region could have parent or childrens 3. both of them have a BasicBlocks(header of a loop and "entry" of a region) that dominates all others and the Region class will have the most stuffs very similar in LoopBase, like: ParentRegion, SubRegions, Blocks, getRegionDepth(), getExitBlock(), getExitingBlock() ...... so, could us just treat "Loop" as some kind of general "Region" of BasicBlocks, and make Loop and Region inherit from "RegionBase"? [1] http://llvm.org/doxygen/LoopInfo_8h-source.html best regards --ether
2010 Jan 08
1
[LLVMdev] Make LoopBase inherit from "RegionBase"?
...have parent or childrens > 3. both of them have a BasicBlocks(header of a loop and "entry" of a > region) that dominates all others > > and the Region class will have the most stuffs very similar in LoopBase, > like: ParentRegion, SubRegions, Blocks, getRegionDepth(), > getExitBlock(), getExitingBlock() ...... > > so, could us just treat "Loop" as some kind of general "Region" of > BasicBlocks, and make Loop and Region inherit from "RegionBase"? > > > [1] http://llvm.org/doxygen/LoopInfo_8h-source.html > > best regards >...
2010 Jan 12
0
[LLVMdev] Make LoopBase inherit from "RegionBase"?
...orrect. > 3. both of them have a BasicBlocks(header of a loop and "entry" of a > region) that dominates all others Correct. > and the Region class will have the most stuffs very similar in LoopBase, > like: ParentRegion, SubRegions, Blocks, getRegionDepth(), Correct. > getExitBlock(), getExitingBlock() ...... This might need some thoughts, > so, could us just treat "Loop" as some kind of general "Region" of > BasicBlocks, and make Loop and Region inherit from "RegionBase"? I would like to do so, as I like the structure of this approach. H...
2010 Jan 12
8
[LLVMdev] Make LoopBase inherit from "RegionBase"?
...orrect. > 3. both of them have a BasicBlocks(header of a loop and "entry" of a > region) that dominates all others Correct. > and the Region class will have the most stuffs very similar in LoopBase, > like: ParentRegion, SubRegions, Blocks, getRegionDepth(), Correct. > getExitBlock(), getExitingBlock() ...... This might need some thoughts, > so, could us just treat "Loop" as some kind of general "Region" of > BasicBlocks, and make Loop and Region inherit from "RegionBase"? I would like to do so, as I like the structure of this approach. H...
2009 Jul 02
0
[LLVMdev] Profiling in LLVM Patch
...do quick >>> +    // lookups. >>> +    SmallVector<BlockT*, 128> LoopBBs(block_begin(), block_end()); >>> +    std::sort(LoopBBs.begin(), LoopBBs.end()); >> >> Would it be better to use a DenseSet for this lookup? > Well, its the same that is used in getExitBlocks() where I got the implementation from. I really don't know but I think the current implementation is okay from what I gather form the LLVM Programmer's Manual. There is nothing wrong with it, but using a DenseSet has better asymptotic performance and shortens the code. OTOH it may have a...
2009 Jul 01
12
[LLVMdev] Profiling in LLVM Patch
...can use binary search to do quick >> + // lookups. >> + SmallVector<BlockT*, 128> LoopBBs(block_begin(), block_end()); >> + std::sort(LoopBBs.begin(), LoopBBs.end()); > > Would it be better to use a DenseSet for this lookup? Well, its the same that is used in getExitBlocks() where I got the implementation from. I really don't know but I think the current implementation is okay from what I gather form the LLVM Programmer's Manual. >> --- llvm-van/include/llvm/Analysis/MaximumSpanningTree.h 1970-01-01 01:00:00.000000000 +0100 >> +++ llvm-c7/i...
2017 Apr 12
6
LLVM is getting faster, April edition
Hi, It's been a while since I sent the last compile time report [1], where it was shown that LLVM was getting slower over time. But now I'm happy to bring some good news: finally, LLVM is getting faster, not slower :) *** Current status *** Many areas of LLVM have been examined and improved since then: InstCombine, SCEV, APInt implementation, and that resulted in almost 10% improvement
2009 Jul 01
0
[LLVMdev] Profiling in LLVM Patch
Hi Andreas, First, thanks again for undertaking this work and submitting it back. There is a lot of good stuff here and it would be great to see it get back into the tree. I have a few major high-level comments on the patch. First off, the patch is quite large and should be broken down into separate incremental changes which are easier to review and apply. I think the patches should more or less
2009 Jun 29
7
[LLVMdev] Profiling in LLVM Patch
Hi all, as proposed in http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/020396.html I implemented the algorithm presented in [Ball94]. It only instruments the minimal number of edges necessary for edge profiling. The main changes introduced by this patch are: *) a interface compatible rewrite of ProfileInfo *) a cleanup of ProfileInfoLoader (some functionality in ProfileInfoLoader