Displaying 20 results from an estimated 900 matches similar to: "[LLVMdev] MBB Critical edges"
2007 Aug 17
0
[LLVMdev] MBB Critical edges
Sorry about the tardiness of my reply. My mail client has playing
tricks with me. :-)
I am assuming the issue has nothing to do the branch to jumptable
instructions but rather the MachineJumpTableInfo associated with every
MachineFunction? If so, please take a look at BranchFoldiing.cpp for
an example.
Evan
On Aug 10, 2007, at 12:30 PM, Fernando Magno Quintao Pereira wrote:
>
>
2007 Aug 17
2
[LLVMdev] MBB Critical edges
Thanks, Evan.
Actually I've solved my problem with some hints from Dale and Anton.
At least I think I've solved it. I had to add one method to
TargetInstrInfo to tell me when an instruction is an indirect jump -
TargetInstrInfo::tii.isIndirectJump(opcode). When that is the case, I
update the jump table using:
// Change jumps to go to the new basic block:
2007 Aug 19
1
[LLVMdev] MBB Critical edges
Hi,
This pass is similar to the one in BreakCriticalEdges.cpp, but it works
for MachineFunction's, instead of Functions. The existence of critical
edges complicates many optimizations. When doing register allocation, you
don't necessarily have to remove critical edges (you can use conventional
SSA-form, for instance. See "Translating Out of Static Single Assignment
Form. SAS
2008 Sep 30
2
[LLVMdev] Inserting MachineBasicBlock(s) before a MachineBasicBlock
I want to be able to do two things with LLVM (both just before code
emission):
1. Insert a MachineBasicBlock just before a MachineBasicBlock.
There is a function called AddPredecessor(). However, the comment says that
it does not update the actual CFG. I want to redirect all CFG edges that are
incoming to this MachineBasicBlock to the new one I create, and add just one
outgoing edge (no branch)
2007 Aug 18
0
[LLVMdev] MBB Critical edges
On Aug 17, 2007, at 3:08 PM, Fernando Magno Quintao Pereira wrote:
>
> Thanks, Evan.
>
> Actually I've solved my problem with some hints from Dale and
> Anton.
Ok, cool. I didn't see their replies. Like I said, my email client is
acting funny.
> At least I think I've solved it. I had to add one method to
> TargetInstrInfo to tell me when an instruction
2006 Jul 09
2
[LLVMdev] Critical edges
Dear guys,
I am having problem to split edges correctly. Mostly because the new
basic blocks are creating infinite loops. Could someone help me fixing the
code below? It is creating assembly like this one below. Block LBB1_9 was
inserted to break the critical edge between blocks LBB1_3 and LBB1_8. But
it changes the semantics of the original program, because, before, LBB1_8
was falling
2006 Jul 05
0
[LLVMdev] Critical edges
> If you don't want critical edges in the machine code CFG, you're going to
> have to write a machine code CFG critical edge splitting pass: LLVM
> doesn't currently have one.
>
> -Chris
Hey guys,
I've coded a pass to break the critical edges of the machine
control flow graph. The program works fine, but I am sure it is not
the right way of implementing it.
2008 Jan 27
2
[LLVMdev] BreakCriticalMachineEdge.h
Hi LLVMers,
what is the status of breaking critical edges in machine functions? I
just compiled the top of the LLVM tree, and I found
llvm/CodeGen/BreakCriticalMachineEdge.h. But this file seems not to be
up-to-date with the other classes in the top of the tree. For instance, it
calls isTerminatorInstr on llvm::TargetInstrInfo, but this method is no
longer there.
If I want to break
2008 Jan 27
0
[LLVMdev] BreakCriticalMachineEdge.h
Fernando,
The code there should be more or less functional, though it's not
currently used by anything. Eventually it should probably be moved to
a method on MachineBasicBlock.
The API breakage you're seeing is because some methods moved around.
Feel free to fix it. :-)
--Owen
On Jan 26, 2008, at 6:31 PM, Fernando Magno Quintao Pereira wrote:
>
> Hi LLVMers,
>
>
2006 Jul 04
2
[LLVMdev] Critical edges
On Tue, 4 Jul 2006, Fernando Magno Quintao Pereira wrote:
> However, it does not remove all the critical edges. I am getting a very
> weird dataflow graph (even without the Break Critical edges pass). The
> dataflow generated by MachineFunction::dump() for the program below is
> given here:
> http://compilers.cs.ucla.edu/fernando/projects/soc/images/loop_no_crit2.pdf
...
> The
2006 Jul 09
0
[LLVMdev] Critical edges
The problem is that you are inserting block 9 in the wrong spot.
mf.getLastBlock() returns the block with the greatest number which may
have nothing to do with the ordering. Why not use the end iterator
(mf.end) to insert?
-Tanya
On Sat, 8 Jul 2006, Fernando Magno Quintao Pereira wrote:
>
> Dear guys,
>
> I am having problem to split edges correctly. Mostly because the new
2006 Oct 03
0
[LLVMdev] Out of range address
On Tue, 3 Oct 2006, Fernando Magno Quintao Pereira wrote:
> I am having some problems when compiling huge programs (like gcc).
> I have a machine pass to destroy critical edges, and I have to add
> new basic blocks, but sometimes the program is too big, and the new
> basic block gets out of addressing range. What is the proper way to
> address this problem? I am producing code
2006 Oct 03
2
[LLVMdev] Out of range address
Dear guys,
I am having some problems when compiling huge programs (like gcc).
I have a machine pass to destroy critical edges, and I have to add
new basic blocks, but sometimes the program is too big, and the new
basic block gets out of addressing range. What is the proper way to
address this problem? I am producing code for the PowerPC, and I had
to implement the insert go-to method. I am
2008 Jan 03
2
[LLVMdev] Tailcall optimization in jit stopped working
tailcall optimization stop working in jit (lli) in revision 45527. i
guess this is because the jit is tailjmping to the wrong function
address. the following change would reenable tailcallopt in jit. But
i am pretty sure that this is not the correct fix (since i don't
really understand what is going on :). maybe evan can comment on this?
regards arnold
Index:
2009 Feb 06
0
[LLVMdev] LLVM misses some cross-MBB and loop optimizations compared to GCC
Thanks. Can you file bugzilla reports? I'll look at the first one soon.
Evan
On Feb 5, 2009, at 8:08 AM, Roman Levenstein wrote:
> Hi,
>
> While testing my new register allocators on some test-cases, I've
> noticed that LLVM misses sometimes some optimization opportunities:
>
> 1) LocalSpiller::RewriteMBB seems not to propagate the information
> about e.g. Spills
2014 Nov 06
2
[LLVMdev] Should the MachineVerifier accept a MBB with a single (landing pad) successor?
Hi all,
I've been investigating a machine verifier failure on the attached
testcase, and I'm tempted to say the verifier is wrong and should
accept it. Skip the description for the proposed change.
On AArch64, the verifier complains with:
*** Bad machine code: MBB exits via unconditional branch but
doesn't have exactly one CFG successor! ***
- function: t4
- basic
2009 Feb 05
2
[LLVMdev] LLVM misses some cross-MBB and loop optimizations compared to GCC
Hi,
While testing my new register allocators on some test-cases, I've
noticed that LLVM misses sometimes some optimization opportunities:
1) LocalSpiller::RewriteMBB seems not to propagate the information
about e.g. Spills between MBBs.In many cases, where MBB B1 has only
one predecessor MBB B2, B1 could reuse the information about the
physical registers that are in the live-out set of B2.
2017 Nov 28
3
storing MBB MCSymbol in custom section
Dear llvm-dev-list,
I have created my own custom section to be added at the end into a
binary upon compilation which contains address of all basic blocks. As
the final address of the basic block is not known until link time, I
collect the MCSymbol* Symbol Values per BB in a temp array and at the
in the custom section and emit it (emitSymbolValue) into my section
within EmitEndOfAsmFile()
I have
2010 Oct 15
2
[LLVMdev] how to get MachineBasicBlock of a BasicBlock
Hello, we can get BasicBlock from MachineBasicBlock through MachineBasicBlock::getBasicBlock() function, but how can I get MachineBasicBlock of a BasicBlock?
Thank you!
2010 Oct 15
0
[LLVMdev] how to get MachineBasicBlock of a BasicBlock
I don't think you can.
The BasicBlock is a member of MachineBasicBlock. It is not inherited,
so it cannot be cast. The number of the MachineBasicBlock is not the
same as any BasicBlock values. So
MachineFunction::getMachineBasicBlock( BasicBlock::{get the number} )
cannot work. I do not see much in the basic block which can identify
it.
So you can search for it.
typedef struct findBlock {