[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