[LLVMdev] Assertion in PHIElimination.cpp
Philipp Brüschweiler
blei42 at gmail.com
Wed Jul 4 11:53:01 PDT 2012
Thanks! Patch has been submitted.
Cheers,
Philipp
On Wed, 4 Jul 2012 11:00:10 -0700
Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Jul 4, 2012, at 5:35 AM, Philipp Brüschweiler <blei42 at gmail.com>
> wrote:
>
> > Hi everyone
> >
> > I'm hitting an assertion in PHIElimination.cpp:375.
> >
> > "Terminator instructions cannot use virtual registers unless"
> > "they are the first terminator in a block!"
> >
> > I was looking at the code around that location a bit and have not
> > found a reason why this assertion has to hold, except for a comment:
> > // In our final twist, we have to decide which instruction
> > kills the // register. In most cases this is the copy, however,
> > the first // terminator instruction at the end of the block may
> > also use the value. // In this case, we should mark *it* as being
> > the killing block, not the // copy.
> >
> > Again, no reason is given why only the first terminator is allowed
> > to use the register.
>
> It seems nobody has needed it before.
>
> commit 2adfa7e9320e79859beb556367ea607a329866b3
> Author: Chris Lattner <sabre at nondot.org>
> Date: Tue Jan 3 23:12:21 2006
>
> Add support for targets (like Alpha) that have terminator
> instructions which use virtual registers. We now allow the first
> instruction in a block of terminators to use virtual registers, and
> update phi elimination to correctly update livevar when eliminating
> phi's. This fixes a problem on a testcase Andrew sent me.
>
>
> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25083
> 91177308-0d34-0410-b5e6-96231b3b80d8
>
> I don't think it is hard to fix, you simply need to find the last
> terminator reading SrcReg instead of insisting there can only be one.
>
> Patches welcome!
>
> /jakob
>
More information about the llvm-dev
mailing list