Displaying 6 results from an estimated 6 matches for "mergeblock".
2017 Mar 03
4
Optionally using value numbering in Simplify*
...implify because it replaces instructions as it goes. It's an example
of a larger issue that pops up quite a lot
I would appreciate thoughts on what to do about it
it amounts to something like this (but again, it happens a lot):
live = gep thing, 0
live2 = gep thing, 1
branch i1 provablytrue,, mergeblock, otherbb
otherbb:
dead = something else
br mergeblock
merge block
a = phi(live, dead)
b = live2
result = icmp sge a, b
both GVN and NewGVN prove provablytrue to be true, and phi to be equivalent
to live.
GVN transforms this piece at time, and so by the time simplifycmpinst sees
the icmp, it is
r...
2011 Apr 05
1
[LLVMdev] [GSoC] Optimizing for size
...tion passes use this information. This means
updating passes that currently check the OptimizeForSize attribute to use the
new information instead. I would also make JumpThreading, InlineCost, and
possibly other passes aware of size optimization.
After working on existing passes, I would add a new MergeBlocks pass. This is
an IPO pass that would combine equivalent basic blocks, extracting them into
new functions. Research has shown that this can decrease code size by 5-6%. The
new pass will be based on CodeExtractor and MergeFunctions; it will create a
hash table of every basic block, based on the numb...
2017 Mar 03
2
Optionally using value numbering in Simplify*
...implify because it replaces instructions as it goes. It's an example
of a larger issue that pops up quite a lot
I would appreciate thoughts on what to do about it
it amounts to something like this (but again, it happens a lot):
live = gep thing, 0
live2 = gep thing, 1
branch i1 provablytrue,, mergeblock, otherbb
otherbb:
dead = something else
br mergeblock
merge block
a = phi(live, dead)
b = live2
result = icmp sge a, b
both GVN and NewGVN prove provablytrue to be true, and phi to be equivalent
to live.
GVN transforms this piece at time, and so by the time simplifycmpinst sees
the icmp, it is
r...
2013 Jan 24
1
[LLVMdev] BlockFrequencyImpl asserts on multiple edges between same MBBs with different weights in LLVM 3.2
Hi,
On 01/23/2013 11:30 PM, Jakob Stoklund Olesen wrote:
> If you can find the place that creates the duplicate MBB edge, that would be great.
>
Found it :) It happens in lib/CodeGen/IfConversion.cpp at the very end
in MergeBlocks. I attached a small patch that should resolve that issue.
Our tests now compile sucessfully even without my previous patch.
regards,
Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Bugfix-to-avoid-creating-duplicate-edges-in-if-conve.patch
Type:...
2013 Jan 23
0
[LLVMdev] BlockFrequencyImpl asserts on multiple edges between same MBBs with different weights in LLVM 3.2
On Jan 23, 2013, at 12:36 PM, Stefan Hepp <stefan at stefant.org> wrote:
> However, an alternative option could be to simply disallow different edge weights for edges with the same source and destination, or to make the call to getEdgeFreq(Pred,BB) in BlockFrequencyImpl distinguish between the edges, which would eliminate the need for an additional PtrSet, but is not that easy to
2013 Jan 23
2
[LLVMdev] BlockFrequencyImpl asserts on multiple edges between same MBBs with different weights in LLVM 3.2
We are developing a new backend for a custom processor using LLVM.
After updating to LLVM 3.2, we run into an assertion in
BlockFrequencyImpl.h. The offending test-case looks basically like this:
for ( ... ) {
switch (i) {
case 100: // do something
break;
case 102: // do something else
break;
case 103: // do some more
break;
case 104: // now something different