Displaying 11 results from an estimated 11 matches for "isblockonlyreachablebyfallthrough".
2010 Dec 14
0
[LLVMdev] Branch delay slots broken.
...ay slots, I get:
Is this with the latest SVN HEAD version of LLVM or some other version? The delay slot filler and many other things have been updated for the Microblaze backend. In particular, the commit r120095 for the MBlaze backend fixed some issues with missing block labels due to AsmPrinter::isBlockOnlyReachableByFallthrough not taking into account delay slots in basic blocks.
> My question is, why would inserting a NOP or splicing an instruction in
> a MachineBasicBlock cause a label to go missing? Could someone point me
> to appropriate places to look?
The problem is that AsmPrinter::isBlockOnlyReachable...
2010 Dec 14
2
[LLVMdev] Branch delay slots broken.
The Sparc, Microblaze, and Mips code generators implement branch delay
slots. They all seem to exhibit the same bug, which is not surprising
since the code is very similar. If I compile code with this snippit:
while (n--)
*s++ = (char) c;
I get this (for the Microblaze):
swi r19, r1, 0
add r3, r0, r0
cmp r3, r3, r7
beqid r3,
2010 Feb 09
3
[LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
...he asmprinter is a simple pass through that doesn't look at the code, which isOnlyReachableByFallthrough violates.
>
> As far as a proposed solution, since asmprinter is the only user of isOnlyReachableByFallthrough, I'd recommend moving isOnlyReachableByFallthrough to be AsmPrinter::IsBlockOnlyReachableByFallthrough. Then you can make it virtual, and have the sparc backend provide its own implementation of it (which might as well just return false all the time).
Sounds reasonable to me. The attached llvm-sparc-asmprinter1.patch implements what you've described above, with SparcAsmPrinter::isBlockOnlyReac...
2010 Feb 08
0
[LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
...the asmprinter is a simple pass through that
doesn't look at the code, which isOnlyReachableByFallthrough violates.
As far as a proposed solution, since asmprinter is the only user of
isOnlyReachableByFallthrough, I'd recommend moving
isOnlyReachableByFallthrough to be
AsmPrinter::IsBlockOnlyReachableByFallthrough. Then you can make it
virtual, and have the sparc backend provide its own implementation of
it (which might as well just return false all the time).
> and if so would something like
>
> BB#7:
> ...
> BCOND cond1, BB#8
> BCOND cond2, BB#57
> BB#8:
> ...
>...
2010 Dec 14
2
[LLVMdev] Branch delay slots broken.
...I get:
>
> Is this with the latest SVN HEAD version of LLVM or some other version? The delay slot filler and many other things have been updated for the Microblaze backend. In particular, the commit r120095 for the MBlaze backend fixed some issues with missing block labels due to AsmPrinter::isBlockOnlyReachableByFallthrough not taking into account delay slots in basic blocks.
>
[snip]
Thanks Wesley! I'm currently using r119910. I'll update.
-Rich
2010 Feb 08
2
[LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
On 11/12/2009, at 10:43 AM, Anton Korobeynikov wrote:
> Hi, Chris
>
>> That is target independent code, so you should not put sparc specific changes there. It sounds like one of the sparc-specific target hooks is wrong.
> Since sparc does not provide any hooks for operation of branches (e.g.
> AnalyzeBranch and friends) it might be possible that generic codegen
> code is
2010 Feb 14
0
[LLVMdev] sparc status llvm 2.7?
...rinter is a simple pass through that doesn't look at the code, which isOnlyReachableByFallthrough violates.
>>
>> As far as a proposed solution, since asmprinter is the only user of isOnlyReachableByFallthrough, I'd recommend moving isOnlyReachableByFallthrough to be AsmPrinter::IsBlockOnlyReachableByFallthrough. Then you can make it virtual, and have the sparc backend provide its own implementation of it (which might as well just return false all the time).
>>
>
> Sounds reasonable to me. The attached llvm-sparc-asmprinter1.patch implements what you've described above, with SparcAsmP...
2010 Oct 04
0
[LLVMdev] missing blocks
> I suspect this is a straight forward problem so I thought I'd ask.
> I'm developing a new backend. I recently updated from the LLVM
> repository and now my output assembly is branching to labels/blocks that
> have been removed. It had been working fine two weeks ago. What looks
> suspicious is the following message:
Just quick though: have you implemented the
2010 Dec 15
0
[LLVMdev] Branch delay slots broken.
...>>
>> Is this with the latest SVN HEAD version of LLVM or some other version? The delay slot filler and many other things have been updated for the Microblaze backend. In particular, the commit r120095 for the MBlaze backend fixed some issues with missing block labels due to AsmPrinter::isBlockOnlyReachableByFallthrough not taking into account delay slots in basic blocks.
>>
> [snip]
>
> Thanks Wesley! I'm currently using r119910. I'll update.
>
> -Rich
Wesley,
You changes work for me also. I applied something similar to the Mips CG
and they worked there also. Thanks again.
-Rich
2010 Oct 04
2
[LLVMdev] missing blocks
I suspect this is a straight forward problem so I thought I'd ask.
I'm developing a new backend. I recently updated from the LLVM
repository and now my output assembly is branching to labels/blocks that
have been removed. It had been working fine two weeks ago. What looks
suspicious is the following message:
TryTailMergeBlocks: BB#1, BB#3, BB#4
Looking for common tails of
2009 Dec 11
2
[LLVMdev] How to check for "SPARC code generation" in MachineBasicBlock.cpp?
Hi, Chris
> That is target independent code, so you should not put sparc specific changes there. It sounds like one of the sparc-specific target hooks is wrong.
Since sparc does not provide any hooks for operation of branches (e.g.
AnalyzeBranch and friends) it might be possible that generic codegen
code is broken in absence of these hooks.
--
With best regards, Anton Korobeynikov
Faculty