[llvm-commits] [llvm] r106748 - in /llvm/trunk: lib/CodeGen/SelectionDAG/SelectionDAG.cpp test/CodeGen/PowerPC/2008-03-06-KillInfo.ll test/CodeGen/Thumb2/ldr-str-imm12.ll test/CodeGen/X86/2006-11-17-IllegalMove.ll test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll test/CodeGen/X86/2008-10-16-SpillerBug.ll test/CodeGen/X86/imp-def-copies.ll test/CodeGen/X86/ins_subreg_coalesce-3.ll
Dan Gohman
gohman at apple.com
Thu Jun 24 08:04:11 PDT 2010
Author: djg
Date: Thu Jun 24 10:04:11 2010
New Revision: 106748
URL: http://llvm.org/viewvc/llvm-project?rev=106748&view=rev
Log:
Eliminate the first have of the optimization which eliminates BRCOND
when the condition is constant. This optimization shouldn't be
necessary, because codegen shouldn't be able to find dead control
paths that the IR-level optimizer can't find. And it's undesirable,
because it encourages bugpoint to leave "br i1 false" branches
in its output. And it wasn't updating the CFG.
I updated all the tests I could, but some tests are too reduced
and I wasn't able to meaningfully preserve them.
Removed:
llvm/trunk/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll
llvm/trunk/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll
llvm/trunk/test/CodeGen/X86/2008-10-16-SpillerBug.ll
llvm/trunk/test/CodeGen/X86/imp-def-copies.ll
Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/trunk/test/CodeGen/Thumb2/ldr-str-imm12.ll
llvm/trunk/test/CodeGen/X86/2006-11-17-IllegalMove.ll
llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll
llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=106748&r1=106747&r2=106748&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Thu Jun 24 10:04:11 2010
@@ -3047,9 +3047,7 @@
break;
case ISD::BRCOND:
if (N2C) {
- if (N2C->getZExtValue()) // Unconditional branch
- return getNode(ISD::BR, DL, MVT::Other, N1, N3);
- else
+ if (!N2C->getZExtValue()) // Unconditional branch
return N1; // Never-taken branch
}
break;
Removed: llvm/trunk/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll?rev=106747&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll (original)
+++ llvm/trunk/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=ppc64 -enable-ppc64-regscavenger
- at .str242 = external constant [3 x i8] ; <[3 x i8]*> [#uses=1]
-
-define fastcc void @ParseContent(i8* %buf, i32 %bufsize) {
-entry:
- %items = alloca [10000 x i8*], align 16 ; <[10000 x i8*]*> [#uses=0]
- %tmp86 = add i32 0, -1 ; <i32> [#uses=1]
- br i1 false, label %cond_true94, label %cond_next99
-cond_true94: ; preds = %entry
- %tmp98 = call i32 (i8*, ...)* @printf( i8* getelementptr ([3 x i8]* @.str242, i32 0, i32 0), i8* null ) ; <i32> [#uses=0]
- %tmp20971 = icmp sgt i32 %tmp86, 0 ; <i1> [#uses=1]
- br i1 %tmp20971, label %bb101, label %bb212
-cond_next99: ; preds = %entry
- ret void
-bb101: ; preds = %cond_true94
- ret void
-bb212: ; preds = %cond_true94
- ret void
-}
-
-declare i32 @printf(i8*, ...)
Modified: llvm/trunk/test/CodeGen/Thumb2/ldr-str-imm12.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Thumb2/ldr-str-imm12.ll?rev=106748&r1=106747&r2=106748&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Thumb2/ldr-str-imm12.ll (original)
+++ llvm/trunk/test/CodeGen/Thumb2/ldr-str-imm12.ll Thu Jun 24 10:04:11 2010
@@ -25,10 +25,7 @@
; CHECK: ldr.w r9, [r7, #28]
%xgaps.i = alloca [32 x %union.rec*], align 4 ; <[32 x %union.rec*]*> [#uses=0]
%ycomp.i = alloca [32 x %union.rec*], align 4 ; <[32 x %union.rec*]*> [#uses=0]
- br i1 false, label %bb, label %bb20
-
-bb: ; preds = %entry
- unreachable
+ br label %bb20
bb20: ; preds = %entry
switch i32 undef, label %bb1287 [
Modified: llvm/trunk/test/CodeGen/X86/2006-11-17-IllegalMove.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2006-11-17-IllegalMove.ll?rev=106748&r1=106747&r2=106748&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/2006-11-17-IllegalMove.ll (original)
+++ llvm/trunk/test/CodeGen/X86/2006-11-17-IllegalMove.ll Thu Jun 24 10:04:11 2010
@@ -15,14 +15,14 @@
%tmp99 = udiv i64 0, 0 ; <i64> [#uses=1]
%tmp = load i8* null ; <i8> [#uses=1]
%tmp114 = icmp eq i64 0, 0 ; <i1> [#uses=1]
- br i1 %tmp114, label %cond_true115, label %cond_next136
+ br label %cond_true115
bb84: ; preds = %entry
ret void
cond_true115: ; preds = %bb77
%tmp118 = load i8* null ; <i8> [#uses=1]
- br i1 false, label %cond_next129, label %cond_true120
+ br label %cond_true120
cond_true120: ; preds = %cond_true115
%tmp127 = udiv i8 %tmp, %tmp118 ; <i8> [#uses=1]
@@ -30,7 +30,7 @@
br label %cond_next129
cond_next129: ; preds = %cond_true120, %cond_true115
- %iftmp.30.0 = phi i64 [ %tmp127.upgrd.1, %cond_true120 ], [ 0, %cond_true115 ] ; <i64> [#uses=1]
+ %iftmp.30.0 = phi i64 [ %tmp127.upgrd.1, %cond_true120 ] ; <i64> [#uses=1]
%tmp132 = icmp eq i64 %iftmp.30.0, %tmp99 ; <i1> [#uses=1]
br i1 %tmp132, label %cond_false148, label %cond_next136
Modified: llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll?rev=106748&r1=106747&r2=106748&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll (original)
+++ llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll Thu Jun 24 10:04:11 2010
@@ -9,10 +9,7 @@
%tmp149 = mul i32 0, %v.1 ; <i32> [#uses=0]
%tmp254 = and i32 0, 15 ; <i32> [#uses=1]
%tmp256 = and i32 0, 15 ; <i32> [#uses=2]
- br i1 false, label %cond_true267, label %cond_next391
-
-cond_true267: ; preds = %cond_next127
- ret i16 0
+ br label %cond_next391
cond_next391: ; preds = %cond_next127
%tmp393 = load i32* %ss, align 4 ; <i32> [#uses=1]
Removed: llvm/trunk/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll?rev=106747&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll (original)
+++ llvm/trunk/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll (removed)
@@ -1,68 +0,0 @@
-; RUN: llc < %s -march=x86 -x86-asm-syntax=att | grep movl | count 2
-; RUN: llc < %s -march=x86 -x86-asm-syntax=att | not grep movb
-
- %struct.double_int = type { i64, i64 }
- %struct.tree_common = type <{ i8, [3 x i8] }>
- %struct.tree_int_cst = type { %struct.tree_common, %struct.double_int }
- %struct.tree_node = type { %struct.tree_int_cst }
- at tree_code_type = external constant [0 x i32] ; <[0 x i32]*> [#uses=1]
-
-define i32 @simple_cst_equal(%struct.tree_node* %t1, %struct.tree_node* %t2) nounwind {
-entry:
- %tmp2526 = bitcast %struct.tree_node* %t1 to i32* ; <i32*> [#uses=1]
- br i1 false, label %UnifiedReturnBlock, label %bb21
-
-bb21: ; preds = %entry
- %tmp27 = load i32* %tmp2526, align 4 ; <i32> [#uses=1]
- %tmp29 = and i32 %tmp27, 255 ; <i32> [#uses=3]
- %tmp2930 = trunc i32 %tmp29 to i8 ; <i8> [#uses=1]
- %tmp37 = load i32* null, align 4 ; <i32> [#uses=1]
- %tmp39 = and i32 %tmp37, 255 ; <i32> [#uses=2]
- %tmp3940 = trunc i32 %tmp39 to i8 ; <i8> [#uses=1]
- %tmp43 = add i32 %tmp29, -3 ; <i32> [#uses=1]
- %tmp44 = icmp ult i32 %tmp43, 3 ; <i1> [#uses=1]
- br i1 %tmp44, label %bb47.split, label %bb76
-
-bb47.split: ; preds = %bb21
- ret i32 0
-
-bb76: ; preds = %bb21
- br i1 false, label %bb82, label %bb146.split
-
-bb82: ; preds = %bb76
- %tmp94 = getelementptr [0 x i32]* @tree_code_type, i32 0, i32 %tmp39 ; <i32*> [#uses=1]
- %tmp95 = load i32* %tmp94, align 4 ; <i32> [#uses=1]
- %tmp9596 = trunc i32 %tmp95 to i8 ; <i8> [#uses=1]
- %tmp98 = add i8 %tmp9596, -4 ; <i8> [#uses=1]
- %tmp99 = icmp ugt i8 %tmp98, 5 ; <i1> [#uses=1]
- br i1 %tmp99, label %bb102, label %bb106
-
-bb102: ; preds = %bb82
- ret i32 0
-
-bb106: ; preds = %bb82
- ret i32 0
-
-bb146.split: ; preds = %bb76
- %tmp149 = icmp eq i8 %tmp2930, %tmp3940 ; <i1> [#uses=1]
- br i1 %tmp149, label %bb153, label %UnifiedReturnBlock
-
-bb153: ; preds = %bb146.split
- switch i32 %tmp29, label %UnifiedReturnBlock [
- i32 0, label %bb155
- i32 1, label %bb187
- ]
-
-bb155: ; preds = %bb153
- ret i32 0
-
-bb187: ; preds = %bb153
- %tmp198 = icmp eq %struct.tree_node* %t1, %t2 ; <i1> [#uses=1]
- br i1 %tmp198, label %bb201, label %UnifiedReturnBlock
-
-bb201: ; preds = %bb187
- ret i32 0
-
-UnifiedReturnBlock: ; preds = %bb187, %bb153, %bb146.split, %entry
- ret i32 0
-}
Removed: llvm/trunk/test/CodeGen/X86/2008-10-16-SpillerBug.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-10-16-SpillerBug.ll?rev=106747&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/2008-10-16-SpillerBug.ll (original)
+++ llvm/trunk/test/CodeGen/X86/2008-10-16-SpillerBug.ll (removed)
@@ -1,160 +0,0 @@
-; RUN: llc < %s -relocation-model=pic -disable-fp-elim -mtriple=i386-apple-darwin -stats |& grep asm-printer | grep 41
-; RUN: llc < %s -relocation-model=pic -disable-fp-elim -mtriple=i386-apple-darwin | FileCheck %s
-
- %struct.XXDActiveTextureTargets = type { i64, i64, i64, i64, i64, i64 }
- %struct.XXDAlphaTest = type { float, i16, i8, i8 }
- %struct.XXDArrayRange = type { i8, i8, i8, i8 }
- %struct.XXDBlendMode = type { i16, i16, i16, i16, %struct.XXTColor4, i16, i16, i8, i8, i8, i8 }
- %struct.XXDClearColor = type { double, %struct.XXTColor4, %struct.XXTColor4, float, i32 }
- %struct.XXDClipPlane = type { i32, [6 x %struct.XXTColor4] }
- %struct.XXDColorBuffer = type { i16, i8, i8, [8 x i16], i8, i8, i8, i8 }
- %struct.XXDColorMatrix = type { [16 x float]*, %struct.XXDImagingCC }
- %struct.XXDConvolution = type { %struct.XXTColor4, %struct.XXDImagingCC, i16, i16, [0 x i32], float*, i32, i32 }
- %struct.XXDDepthTest = type { i16, i16, i8, i8, i8, i8, double, double }
- %struct.XXDFixedFunction = type { %struct.YYToken* }
- %struct.XXDFogMode = type { %struct.XXTColor4, float, float, float, float, float, i16, i16, i16, i8, i8 }
- %struct.XXDHintMode = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
- %struct.XXDHistogram = type { %struct.XXTFixedColor4*, i32, i16, i8, i8 }
- %struct.XXDImagingCC = type { { float, float }, { float, float }, { float, float }, { float, float } }
- %struct.XXDImagingSubset = type { %struct.XXDConvolution, %struct.XXDConvolution, %struct.XXDConvolution, %struct.XXDColorMatrix, %struct.XXDMinmax, %struct.XXDHistogram, %struct.XXDImagingCC, %struct.XXDImagingCC, %struct.XXDImagingCC, %struct.XXDImagingCC, i32, [0 x i32] }
- %struct.XXDLight = type { %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, %struct.XXTCoord3, float, float, float, float, float, %struct.XXTCoord3, float, %struct.XXTCoord3, float, %struct.XXTCoord3, float, float, float, float, float }
- %struct.XXDLightModel = type { %struct.XXTColor4, [8 x %struct.XXDLight], [2 x %struct.XXDMaterial], i32, i16, i16, i16, i8, i8, i8, i8, i8, i8 }
- %struct.XXDLightProduct = type { %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4 }
- %struct.XXDLineMode = type { float, i32, i16, i16, i8, i8, i8, i8 }
- %struct.XXDLogicOp = type { i16, i8, i8 }
- %struct.XXDMaskMode = type { i32, [3 x i32], i8, i8, i8, i8, i8, i8, i8, i8 }
- %struct.XXDMaterial = type { %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, %struct.XXTColor4, float, float, float, float, [8 x %struct.XXDLightProduct], %struct.XXTColor4, [8 x i32] }
- %struct.XXDMinmax = type { %struct.XXDMinmaxTable*, i16, i8, i8, [0 x i32] }
- %struct.XXDMinmaxTable = type { %struct.XXTColor4, %struct.XXTColor4 }
- %struct.XXDMultisample = type { float, i8, i8, i8, i8, i8, i8, i8, i8 }
- %struct.XXDPipelineProgramState = type { i8, i8, i8, i8, [0 x i32], %struct.XXTColor4* }
- %struct.XXDPixelMap = type { i32*, float*, float*, float*, float*, float*, float*, float*, float*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
- %struct.XXDPixelMode = type { float, float, %struct.XXDPixelStore, %struct.XXDPixelTransfer, %struct.XXDPixelMap, %struct.XXDImagingSubset, i32, i32 }
- %struct.XXDPixelPack = type { i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8 }
- %struct.XXDPixelStore = type { %struct.XXDPixelPack, %struct.XXDPixelPack }
- %struct.XXDPixelTransfer = type { float, float, float, float, float, float, float, float, float, float, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float }
- %struct.XXDPointMode = type { float, float, float, float, %struct.XXTCoord3, float, i8, i8, i8, i8, i16, i16, i32, i16, i16 }
- %struct.XXDPolygonMode = type { [128 x i8], float, float, i16, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8 }
- %struct.XXDRegisterCombiners = type { i8, i8, i8, i8, i32, [2 x %struct.XXTColor4], [8 x %struct.XXDRegisterCombinersPerStageState], %struct.XXDRegisterCombinersFinalStageState }
- %struct.XXDRegisterCombinersFinalStageState = type { i8, i8, i8, i8, [7 x %struct.XXDRegisterCombinersPerVariableState] }
- %struct.XXDRegisterCombinersPerPortionState = type { [4 x %struct.XXDRegisterCombinersPerVariableState], i8, i8, i8, i8, i16, i16, i16, i16, i16, i16 }
- %struct.XXDRegisterCombinersPerStageState = type { [2 x %struct.XXDRegisterCombinersPerPortionState], [2 x %struct.XXTColor4] }
- %struct.XXDRegisterCombinersPerVariableState = type { i16, i16, i16, i16 }
- %struct.XXDScissorTest = type { %struct.XXTFixedColor4, i8, i8, i8, i8 }
- %struct.XXDState = type <{ i16, i16, i16, i16, i32, i32, [256 x %struct.XXTColor4], [128 x %struct.XXTColor4], %struct.XXDViewport, %struct.XXDTransform, %struct.XXDLightModel, %struct.XXDActiveTextureTargets, %struct.XXDAlphaTest, %struct.XXDBlendMode, %struct.XXDClearColor, %struct.XXDColorBuffer, %struct.XXDDepthTest, %struct.XXDArrayRange, %struct.XXDFogMode, %struct.XXDHintMode, %struct.XXDLineMode, %struct.XXDLogicOp, %struct.XXDMaskMode, %struct.XXDPixelMode, %struct.XXDPointMode, %struct.XXDPolygonMode, %struct.XXDScissorTest, i32, %struct.XXDStencilTest, [8 x %struct.XXDTextureMode], [16 x %struct.XXDTextureImageMode], %struct.XXDArrayRange, [8 x %struct.XXDTextureCoordGen], %struct.XXDClipPlane, %struct.XXDMultisample, %struct.XXDRegisterCombiners, %struct.XXDArrayRange, %struct.XXDArrayRange, [3 x %struct.XXDPipelineProgramState], %struct.XXDArrayRange, %struct.XXDTransformFeedback, i32*, %struct.XXDFixedFunction, [3 x i32], [2 x i32] }>
- %struct.XXDStencilTest = type { [3 x { i32, i32, i16, i16, i16, i16 }], i32, [4 x i8] }
- %struct.XXDTextureCoordGen = type { { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, { i16, i16, %struct.XXTColor4, %struct.XXTColor4 }, i8, i8, i8, i8 }
- %struct.XXDTextureImageMode = type { float }
- %struct.XXDTextureMode = type { %struct.XXTColor4, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, float, float, i16, i16, i16, i16, i16, i16, [4 x i16], i8, i8, i8, i8, [3 x float], [4 x float], float, float }
- %struct.XXDTextureRec = type opaque
- %struct.XXDTransform = type <{ [24 x [16 x float]], [24 x [16 x float]], [16 x float], float, float, float, float, float, i8, i8, i8, i8, i32, i32, i32, i16, i16, i8, i8, i8, i8, i32 }>
- %struct.XXDTransformFeedback = type { i8, i8, i8, i8, [0 x i32], [16 x i32], [16 x i32] }
- %struct.XXDViewport = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, double, double, i32, i32, i32, i32, float, float, float, float }
- %struct.XXTColor4 = type { float, float, float, float }
- %struct.XXTCoord3 = type { float, float, float }
- %struct.XXTFixedColor4 = type { i32, i32, i32, i32 }
- %struct.XXVMTextures = type { [16 x %struct.XXDTextureRec*] }
- %struct.XXVMVPContext = type { i32 }
- %struct.XXVMVPStack = type { i32, i32 }
- %struct.YYToken = type { { i16, i16, i32 } }
- %struct._XXVMConstants = type { <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float, float, float, float, float, float, float, float, float, float, float, float, [256 x float], [4096 x i8], [8 x float], [48 x float], [128 x float], [528 x i8], { void (i8*, i8*, i32, i8*)*, float (float)*, float (float)*, float (float)*, i32 (float)* } }
- at llvm.used = appending global [1 x i8*] [ i8* bitcast (void (%struct.XXDState*, <4 x float>*, <4 x float>**, %struct._XXVMConstants*, %struct.YYToken*, %struct.XXVMVPContext*, %struct.XXVMTextures*, %struct.XXVMVPStack*, <4 x float>*, <4 x float>*, <4 x float>*, <4 x float>*, <4 x float>*, <4 x float>*, <4 x float>*, <4 x float>*, [4 x <4 x float>]*, i32*, <4 x i32>*, i64)* @t to i8*) ], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0]
-
-define void @t(%struct.XXDState* %gldst, <4 x float>* %prgrm, <4 x float>** %buffs, %struct._XXVMConstants* %cnstn, %struct.YYToken* %pstrm, %struct.XXVMVPContext* %vmctx, %struct.XXVMTextures* %txtrs, %struct.XXVMVPStack* %vpstk, <4 x float>* %atr0, <4 x float>* %atr1, <4 x float>* %atr2, <4 x float>* %atr3, <4 x float>* %vtx0, <4 x float>* %vtx1, <4 x float>* %vtx2, <4 x float>* %vtx3, [4 x <4 x float>]* %tmpGbl, i32* %oldMsk, <4 x i32>* %adrGbl, i64 %key_token) nounwind {
-entry:
-; CHECK: t:
- %0 = trunc i64 %key_token to i32 ; <i32> [#uses=1]
- %1 = getelementptr %struct.YYToken* %pstrm, i32 %0 ; <%struct.YYToken*> [#uses=5]
- br label %bb1132
-
-bb51: ; preds = %bb1132
-; CHECK: .align 4
-; CHECK: xorl %ecx, %ecx
-; CHECK: andl $7
- %2 = getelementptr %struct.YYToken* %1, i32 %operation.0.rec, i32 0, i32 0 ; <i16*> [#uses=1]
- %3 = load i16* %2, align 1 ; <i16> [#uses=3]
- %4 = lshr i16 %3, 6 ; <i16> [#uses=1]
- %5 = trunc i16 %4 to i8 ; <i8> [#uses=1]
- %6 = zext i8 %5 to i32 ; <i32> [#uses=1]
- %7 = trunc i16 %3 to i8 ; <i8> [#uses=1]
- %8 = and i8 %7, 7 ; <i8> [#uses=1]
- %mask5556 = zext i8 %8 to i32 ; <i32> [#uses=3]
- %.sum1324 = add i32 %mask5556, 2 ; <i32> [#uses=1]
- %.rec = add i32 %operation.0.rec, %.sum1324 ; <i32> [#uses=1]
- %9 = bitcast %struct.YYToken* %operation.0 to i32* ; <i32*> [#uses=1]
- %10 = load i32* %9, align 1 ; <i32> [#uses=1]
- %11 = lshr i32 %10, 16 ; <i32> [#uses=2]
- %12 = trunc i32 %11 to i8 ; <i8> [#uses=1]
- %13 = and i8 %12, 1 ; <i8> [#uses=1]
- %14 = lshr i16 %3, 15 ; <i16> [#uses=1]
- %15 = trunc i16 %14 to i8 ; <i8> [#uses=1]
- %16 = or i8 %13, %15 ; <i8> [#uses=1]
- %17 = icmp eq i8 %16, 0 ; <i1> [#uses=1]
- br i1 %17, label %bb94, label %bb75
-
-bb75: ; preds = %bb51
- %18 = getelementptr %struct.YYToken* %1, i32 0, i32 0, i32 0 ; <i16*> [#uses=1]
- %19 = load i16* %18, align 4 ; <i16> [#uses=1]
- %20 = load i16* null, align 2 ; <i16> [#uses=1]
- %21 = zext i16 %19 to i64 ; <i64> [#uses=1]
- %22 = zext i16 %20 to i64 ; <i64> [#uses=1]
- %23 = shl i64 %22, 16 ; <i64> [#uses=1]
- %.ins1177 = or i64 %23, %21 ; <i64> [#uses=1]
- %.ins1175 = or i64 %.ins1177, 0 ; <i64> [#uses=1]
- %24 = and i32 %11, 1 ; <i32> [#uses=1]
- %.neg1333 = sub i32 %mask5556, %24 ; <i32> [#uses=1]
- %.neg1335 = sub i32 %.neg1333, 0 ; <i32> [#uses=1]
- %25 = sub i32 %.neg1335, 0 ; <i32> [#uses=1]
- br label %bb94
-
-bb94: ; preds = %bb75, %bb51
- %extraToken.0 = phi i64 [ %.ins1175, %bb75 ], [ %extraToken.1, %bb51 ] ; <i64> [#uses=1]
- %argCount.0 = phi i32 [ %25, %bb75 ], [ %mask5556, %bb51 ] ; <i32> [#uses=1]
- %operation.0.sum1392 = add i32 %operation.0.rec, 1 ; <i32> [#uses=2]
- %26 = getelementptr %struct.YYToken* %1, i32 %operation.0.sum1392, i32 0, i32 0 ; <i16*> [#uses=1]
- %27 = load i16* %26, align 4 ; <i16> [#uses=1]
- %28 = getelementptr %struct.YYToken* %1, i32 %operation.0.sum1392, i32 0, i32 1 ; <i16*> [#uses=1]
- %29 = load i16* %28, align 2 ; <i16> [#uses=1]
- store i16 %27, i16* null, align 8
- store i16 %29, i16* null, align 2
- br i1 false, label %bb1132, label %bb110
-
-bb110: ; preds = %bb94
- switch i32 %6, label %bb1078 [
- i32 30, label %bb960
- i32 32, label %bb801
- i32 38, label %bb809
- i32 78, label %bb1066
- ]
-
-bb801: ; preds = %bb110
- unreachable
-
-bb809: ; preds = %bb110
- unreachable
-
-bb960: ; preds = %bb110
- %30 = icmp eq i32 %argCount.0, 1 ; <i1> [#uses=1]
- br i1 %30, label %bb962, label %bb965
-
-bb962: ; preds = %bb960
- unreachable
-
-bb965: ; preds = %bb960
- unreachable
-
-bb1066: ; preds = %bb110
- unreachable
-
-bb1078: ; preds = %bb110
- unreachable
-
-bb1132: ; preds = %bb94, %entry
- %extraToken.1 = phi i64 [ undef, %entry ], [ %extraToken.0, %bb94 ] ; <i64> [#uses=1]
- %operation.0.rec = phi i32 [ 0, %entry ], [ %.rec, %bb94 ] ; <i32> [#uses=4]
- %operation.0 = getelementptr %struct.YYToken* %1, i32 %operation.0.rec ; <%struct.YYToken*> [#uses=1]
- br i1 false, label %bb1134, label %bb51
-
-bb1134: ; preds = %bb1132
- ret void
-}
Removed: llvm/trunk/test/CodeGen/X86/imp-def-copies.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/imp-def-copies.ll?rev=106747&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/imp-def-copies.ll (original)
+++ llvm/trunk/test/CodeGen/X86/imp-def-copies.ll (removed)
@@ -1,29 +0,0 @@
-; RUN: llc < %s -march=x86 | not grep mov
-
- %struct.active_line = type { %struct.gs_fixed_point, %struct.gs_fixed_point, i32, i32, i32, %struct.line_segment*, i32, i16, i16, %struct.active_line*, %struct.active_line* }
- %struct.gs_fixed_point = type { i32, i32 }
- %struct.line_list = type { %struct.active_line*, i32, i16, %struct.active_line*, %struct.active_line*, %struct.active_line*, %struct.active_line, i32 }
- %struct.line_segment = type { %struct.line_segment*, %struct.line_segment*, i32, %struct.gs_fixed_point }
- %struct.subpath = type { %struct.line_segment*, %struct.line_segment*, i32, %struct.gs_fixed_point, %struct.line_segment*, i32, i32, i8 }
-
-define fastcc void @add_y_list(%struct.subpath* %ppath.0.4.val, i16 signext %tag, %struct.line_list* %ll, i32 %pbox.0.0.1.val, i32 %pbox.0.1.0.val, i32 %pbox.0.1.1.val) nounwind {
-entry:
- br i1 false, label %return, label %bb
-bb: ; preds = %bb280, %entry
- %psub.1.reg2mem.0 = phi %struct.subpath* [ %psub.0.reg2mem.0, %bb280 ], [ undef, %entry ] ; <%struct.subpath*> [#uses=1]
- %plast.1.reg2mem.0 = phi %struct.line_segment* [ %plast.0.reg2mem.0, %bb280 ], [ undef, %entry ] ; <%struct.line_segment*> [#uses=1]
- %prev_dir.0.reg2mem.0 = phi i32 [ %dir.0.reg2mem.0, %bb280 ], [ undef, %entry ] ; <i32> [#uses=1]
- br i1 false, label %bb280, label %bb109
-bb109: ; preds = %bb
- %tmp113 = icmp sgt i32 0, %prev_dir.0.reg2mem.0 ; <i1> [#uses=1]
- br i1 %tmp113, label %bb116, label %bb280
-bb116: ; preds = %bb109
- ret void
-bb280: ; preds = %bb109, %bb
- %psub.0.reg2mem.0 = phi %struct.subpath* [ null, %bb ], [ %psub.1.reg2mem.0, %bb109 ] ; <%struct.subpath*> [#uses=1]
- %plast.0.reg2mem.0 = phi %struct.line_segment* [ null, %bb ], [ %plast.1.reg2mem.0, %bb109 ] ; <%struct.line_segment*> [#uses=1]
- %dir.0.reg2mem.0 = phi i32 [ 0, %bb ], [ 0, %bb109 ] ; <i32> [#uses=1]
- br i1 false, label %return, label %bb
-return: ; preds = %bb280, %entry
- ret void
-}
Modified: llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll?rev=106748&r1=106747&r2=106748&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll (original)
+++ llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll Thu Jun 24 10:04:11 2010
@@ -39,8 +39,7 @@
%tmp659 = icmp eq i8 %tmp658, 0 ; <i1> [#uses=1]
br i1 %tmp659, label %bb650, label %bb662
bb662: ; preds = %bb650
- %tmp685 = icmp eq %struct.rec* null, null ; <i1> [#uses=1]
- br i1 %tmp685, label %bb761, label %bb688
+ br label %bb761
bb688: ; preds = %bb662
ret void
bb761: ; preds = %bb662
More information about the llvm-commits
mailing list