Displaying 20 results from an estimated 300 matches similar to: "[LLVMdev] Bug in BranchFolding.cpp:OptimizeBlock"
2012 Sep 21
0
[LLVMdev] liveness assertion problem in llc
Hi Jacob,
At this point, I suspect there is a problem with maintaining liveness information during branch folding. Here is what I see:
I have a basic block ready for branch optimization, that computes a predicate p10 on which a conditional branch depends. Notice that this is in the stage with physical registers.
BB#2: derived from LLVM BB %while.cond.preheader
Live Ins: %R3 %R5
2019 Sep 27
2
What about multiple MachineMemOperands in one MI (BranchFolding/MachineInstr::mayAlias)?
Hi!
Does anyone know how it should be interpreted when one MI has multiple MachineMemOperands?
(I've tried to find information but could not find any clear definition.)
For example BranchFolder may do things like this (also see https://godbolt.org/z/iphFH4):
# *** IR Dump Before Control Flow Optimizer ***:
bb.0.entry:
...
JCC_1 %bb.2, 5, implicit killed $eflags
JMP_1 %bb.1
bb.1.s1:
2006 Oct 24
1
[LLVMdev] InsertBranch called unconditionally?
According to the docs, InsertBranch should only be called if
AnalyzeBranch returns success. But in targets (like ARM or Sparc) that
don't implement them, the following test fails:
-----------------------------------
void %__gcov_init() {
entry:
switch uint 0, label %cond_true.i [
uint 0, label %UnifiedReturnBlock
uint 875573313, label
2008 Oct 27
0
[LLVMdev] Fwd: [llvm-commits] [llvm] r58225 - /llvm/trunk/lib/CodeGen/BranchFolding.cpp
Begin forwarded message:
>
> Increase default setting of tail-merge-threshold to
> 150, based on llvm-test measurements.
>
> static cl::opt<unsigned>
> TailMergeThreshold("tail-merge-threshold",
> cl::desc("Max number of predecessors to consider tail
> merging"),
> - cl::init(100), cl::Hidden);
> + cl::init(150),
2019 Sep 27
3
What about multiple MachineMemOperands in one MI (BranchFolding/MachineInstr::mayAlias)?
On 9/27/19 7:33 AM, Matt Arsenault via llvm-dev wrote:
>
>
>> On Sep 27, 2019, at 09:07, Björn Pettersson A via llvm-dev
>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> Obviously we do not store into two locations (it is still a single
>> two byte store).
>> So is it (always) correct to interpret the list of
2011 Jun 15
1
[LLVMdev] Is LLVM expressive enough to represent asynchronous exceptions?
On Jun 14, 2011, at 1:07 AM, Duncan Sands wrote:
> Hi Andrew,
>
>> No. Duncan suggested that he could hitch a ride with us through France. The problem is, we're not driving to Spain at all and there doesn't appear to be any place to transfer.
>>
>> The point is, you're not going to be able to leverage most of a CFG-based optimizing compiler if don't use
2018 Mar 22
0
Compile time from IR
Hi,
I have a compiler project using an LLVM backend (compiled for 64 bit windows), and since it has started to get to production level source code sizes the compile times have gotten somewhat extreme (around 30 mins each time).
Not sure what is the best metric for measuring whether 30 mins is reasonable. The .ll output file is ~1.5 million lines.
A snip of the top of the stats output is
2016 Mar 29
2
[CodeGen] CodeSize - TailMerging and BlockPlacement
Hi everyone,
The code layout that TailMerging (inside BranchFolding) works on is not
the final layout optimized based on the branch probability. Generally,
after BlockPlacement, many new merging opportunities emerge. I did an
experiment of adding additional BranchFolding and BlockPlacement after
the existing BlockPlacement (i.e., -block-placement -branch-folder
-block-placement) targeting
2014 Jan 04
2
[LLVMdev] How to update LiveInterval information of newly inserted machine basic block
On Jan 4, 2014, at 4:38 AM, Haishan <hndxvon at 163.com> wrote:
> At 2014-01-04 06:11:38,"Jakob Stoklund Olesen" <stoklund at 2pi.dk> wrote:
>
> On Jan 3, 2014, at 1:52 PM, Andrew Trick <atrick at apple.com> wrote:
>
>> He really just wants to rerun LiveIntervals analysis, but LiveVariables is no longer available. Would it work just to clear all
2013 Jun 04
0
[LLVMdev] MachineBasicBlock::addLiveIn errors
The unchecked assertion that the same register is not added multiple times to the MBB::LiveIn list isn't being respected. Could we add an assertion to check for it?
==== //dwarc/Tools/MetaWare/Toolset/main/dev/llvm/include/llvm/CodeGen/MachineBasicBlock.h#6 - /remote/arctools/marksl/marksl_1/llvm/include/llvm/CodeGen/MachineBasicBlock.h ====
295,298d294
< /// addLiveIn - Add the
2008 Feb 19
2
[LLVMdev] 2008-02-18-TailMergingBug.ll Failure
Hi again,
On my PPC G4 box, I'm getting this failure for TOT with llvm-gcc 4.2:
Running /Users/wendling/llvm/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Users/wendling/llvm/llvm.src/test/CodeGen/X86/2008-02-18-
TailMergingBug.ll for PR1909
Failed with exit(1) at line 1
while running: llvm-as < /Users/wendling/llvm/llvm.src/test/CodeGen/
X86/2008-02-18-TailMergingBug.ll | llc -march=x86
2012 Nov 01
0
[LLVMdev] Tail Duplication Questions
http://llvm.org/viewvc/llvm-project/llvm/tags/RELEASE_31/final/lib/CodeGen/Passes.cpp?revision=156747&view=markup
void TargetPassConfig::addMachineSSAOptimization() {
// Pre-ra tail duplication.
if (addPass(EarlyTailDuplicateID) != &NoPassID)
printAndVerify("After Pre-RegAlloc TailDuplicate");
/// Add passes that optimize machine instructions after register allocation.
2014 May 25
2
[LLVMdev] [AArch64] Remaining broken tests
Hi Tim,
There are three remaining broken tests on AArch64 on Gabor's buildbot:
http://lab.llvm.org:8011/builders/llvm-aarch64-linux
CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll
** LLVM ERROR: Can't handle live physical register dependency!
CodeGen/Generic/asm-large-immediate.ll
** error: invalid operand in inline asm: '/* result: ${0:c} */'
2017 Jul 27
2
Tail merging "undef" with a defined register: wrong code
The comment in test/CodeGen/X86/branchfolding-undef.mir states that such
merging is legal, however doing so can actually generate wrong code:
Consider this (valid code):
---
name: fred
tracksRegLiveness: true
body: |
bb.0:
successors: %bb.1, %bb.2
J2_jumpt undef %p0, %bb.2, implicit-def %pc
J2_jump %bb.1, implicit-def %pc
bb.1:
successors: %bb.3
%r0 =
2008 Oct 14
0
[LLVMdev] CFG modifcations and code gen
On Oct 13, 2008, at 5:14 PMPDT, Villmow, Micah wrote:
> As stated in an earlier email, I am working on getting break/
> continue to work correctly for my backend, but I ran into another
> issue with codegen and the CFG. It seems that code gen is not done
> based on the CFG, but rather on the block numbers, and the function
> call MachineFunction::RenumberBlocks doesn’t
2008 May 27
2
[LLVMdev] Iterator issue in BranchFolder::RemoveBlocksWithHash?
On May 23, 2008, at 10:19 AM, Dale Johannesen wrote:
> On May 23, 2008, at 4:10 AM, Nicolas Capens wrote:
>
>> I updated from 2.2 to the latest SVN head and I now get a debug
>> assert in BranchFolder::RemoveBlocksWithHash: “vector iterators
>> incompatible”. I’m using Visual C++ 2005. I think this is the
>> culprit code:
>>
>>
2015 Apr 10
2
[LLVMdev] [RFC][CodeGen] What CLI should we provide for overriding the target decision on whether to run a pass (GlobalMerge) ?
Hi Eric, all,
Currently, there isn't a good way to force enable/disable GlobalMerge.
Targets decide whether to create the pass based on the optimization
level (which is how it should be).
The problem is when you want to override that decision. We have
-enable-global-merge, true by default, which should really be
-disable-global-merge, as it only works as a last-resort way to
force-disable
2008 May 23
0
[LLVMdev] Iterator issue in BranchFolder::RemoveBlocksWithHash?
On May 23, 2008, at 4:10 AM, Nicolas Capens wrote:
> Hi all,
>
> I updated from 2.2 to the latest SVN head and I now get a debug
> assert in BranchFolder::RemoveBlocksWithHash: “vector iterators
> incompatible”. I’m using Visual C++ 2005. I think this is the
> culprit code:
>
> MergePotentials.erase(CurMPIter);
> if (CurMPIter==B)
> break;
>
2008 May 23
3
[LLVMdev] Iterator issue in BranchFolder::RemoveBlocksWithHash?
Hi all,
I updated from 2.2 to the latest SVN head and I now get a debug assert in
BranchFolder::RemoveBlocksWithHash: "vector iterators incompatible". I'm
using Visual C++ 2005. I think this is the culprit code:
MergePotentials.erase(CurMPIter);
if (CurMPIter==B)
break;
The erase clears the _Mycont field (i.e. the iterator's container), while
the ==
2008 Feb 19
0
[LLVMdev] 2008-02-18-TailMergingBug.ll Failure
On Tue, 19 Feb 2008, Bill Wendling wrote:
> On my PPC G4 box, I'm getting this failure for TOT with llvm-gcc 4.2:
Fixed.
-Chris
> FAIL: /Users/wendling/llvm/llvm.src/test/CodeGen/X86/2008-02-18-
> TailMergingBug.ll for PR1909
> Failed with exit(1) at line 1
> while running: llvm-as < /Users/wendling/llvm/llvm.src/test/CodeGen/
> X86/2008-02-18-TailMergingBug.ll | llc