[llvm-commits] [llvm] r122581 - /llvm/trunk/lib/CodeGen/MachineVerifier.cpp
Cameron Zwarich
zwarich at apple.com
Tue Dec 28 14:47:32 PST 2010
On Dec 28, 2010, at 12:51 PM, Jakob Stoklund Olesen wrote:
> On Dec 27, 2010, at 5:43 PM, Cameron Zwarich wrote:
>
>> On Dec 27, 2010, at 4:11 PM, Jakob Stoklund Olesen wrote:
>>
>> There's one in CodeGen/X86/2008-05-21-CoalescerBug.ll, but it never triggers the false error. After phi elimination (either normal or strong), there is no live range or VN for the undef value, so the error is never emitted.
>
> You get this code after coalescing:
>
> ********** INTERVALS **********
> %reg16393,0.000000e+00 = [76d,96L:0)[96L,188d:1) 0 at 76d-phikill 1 at 96L-phidef
> %reg16385,0.000000e+00 = [48L,76d:0)[100d,152L:0) 0 at 100d
> %reg16392,0.000000e+00 = [12d,48L:0)[60d,96L:2)[96L,100d:1) 0 at 12d-phikill 1 at 96L-phidef 2 at 60d-phikill
> %reg16394,0.000000e+00 = [4d,48L:0)[52d,96L:2)[96L,156d:1) 0 at 4d-phikill 1 at 96L-phidef 2 at 52d-phikill
> ********** MACHINEINSTRS **********
> # Machine code for function tree_redirect_edge_and_branch:
> Frame Objects:
> fi#-2: size=4, align=4, fixed, at location [SP+8]
> fi#-1: size=4, align=16, fixed, at location [SP+4]
>
> 0L BB#0: derived from LLVM BB %entry
> 4L %reg16394<def> = MOV8ri 1; GR8:%reg16394
> 12L %reg16392<def> = MOV32r0 %EFLAGS<imp-def,dead>; GR32:%reg16392
> 36L JMP_4 <BB#2>
> Successors according to CFG: BB#2
>
> 48L BB#1: derived from LLVM BB %bb483
> Predecessors according to CFG: BB#2
> 52L %reg16394<def> = MOV8r0 %EFLAGS<imp-def,dead>; GR8:%reg16394
> 60L %reg16392<def> = MOV32rm %reg0, 1, %reg0, 0, %reg0; mem:LD4[null] GR32:%reg16392
> 76L %reg16393<def> = COPY %reg16385<kill>; GR32:%reg16393,16385
> Successors according to CFG: BB#2
>
> 96L BB#2: derived from LLVM BB %bb497
> Predecessors according to CFG: BB#0 BB#1
> 100L %reg16385<def> = COPY %reg16392<kill>; GR32:%reg16385,16392
> 124L TEST8ri %reg16394, 1, %EFLAGS<imp-def>; GR8:%reg16394
> 132L JNE_4 <BB#1>, %EFLAGS<imp-use,kill>
> 140L JMP_4 <BB#3>
> Successors according to CFG: BB#1 BB#3
>
> Note the live range for %reg16393: Valno 0 is live out of BB#1, but there is no value live out of BB#0.
>
> I don't know why the verifier fails to falsely report this.
Here's a patch that fixes both issues. It won't catch any more errors, but it is arguably a bit clearer. Should I land it?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: skip-phidef.patch
Type: application/octet-stream
Size: 2120 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20101228/00ebcb16/attachment.obj>
-------------- next part --------------
Cameron
More information about the llvm-commits
mailing list