From 102f3851bbde16fdd826d072240731365fe6da5d Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 24 Jun 2010 15:04:11 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106748 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 4 +- test/CodeGen/PowerPC/2008-03-06-KillInfo.ll | 21 --- test/CodeGen/Thumb2/ldr-str-imm12.ll | 5 +- test/CodeGen/X86/2006-11-17-IllegalMove.ll | 6 +- .../X86/2007-10-12-CoalesceExtSubReg.ll | 5 +- test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll | 68 -------- test/CodeGen/X86/2008-10-16-SpillerBug.ll | 160 ------------------ test/CodeGen/X86/imp-def-copies.ll | 29 ---- test/CodeGen/X86/ins_subreg_coalesce-3.ll | 3 +- 9 files changed, 7 insertions(+), 294 deletions(-) delete mode 100644 test/CodeGen/PowerPC/2008-03-06-KillInfo.ll delete mode 100644 test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll delete mode 100644 test/CodeGen/X86/2008-10-16-SpillerBug.ll delete mode 100644 test/CodeGen/X86/imp-def-copies.ll diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 4cbfaed87fc..5719cefb42e 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -3047,9 +3047,7 @@ SDValue SelectionDAG::getNode(unsigned Opcode, DebugLoc DL, EVT VT, 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; diff --git a/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll b/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll deleted file mode 100644 index 222dde45353..00000000000 --- a/test/CodeGen/PowerPC/2008-03-06-KillInfo.ll +++ /dev/null @@ -1,21 +0,0 @@ -; RUN: llc < %s -march=ppc64 -enable-ppc64-regscavenger -@.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 ; [#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 ) ; [#uses=0] - %tmp20971 = icmp sgt i32 %tmp86, 0 ; [#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*, ...) diff --git a/test/CodeGen/Thumb2/ldr-str-imm12.ll b/test/CodeGen/Thumb2/ldr-str-imm12.ll index b444b29483a..29b8e75cb8b 100644 --- a/test/CodeGen/Thumb2/ldr-str-imm12.ll +++ b/test/CodeGen/Thumb2/ldr-str-imm12.ll @@ -25,10 +25,7 @@ entry: ; 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 [ diff --git a/test/CodeGen/X86/2006-11-17-IllegalMove.ll b/test/CodeGen/X86/2006-11-17-IllegalMove.ll index e839d7295ad..affb7afb1c5 100644 --- a/test/CodeGen/X86/2006-11-17-IllegalMove.ll +++ b/test/CodeGen/X86/2006-11-17-IllegalMove.ll @@ -15,14 +15,14 @@ bb77: ; preds = %entry, %entry %tmp99 = udiv i64 0, 0 ; [#uses=1] %tmp = load i8* null ; [#uses=1] %tmp114 = icmp eq i64 0, 0 ; [#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 ; [#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 ; [#uses=1] @@ -30,7 +30,7 @@ cond_true120: ; preds = %cond_true115 br label %cond_next129 cond_next129: ; preds = %cond_true120, %cond_true115 - %iftmp.30.0 = phi i64 [ %tmp127.upgrd.1, %cond_true120 ], [ 0, %cond_true115 ] ; [#uses=1] + %iftmp.30.0 = phi i64 [ %tmp127.upgrd.1, %cond_true120 ] ; [#uses=1] %tmp132 = icmp eq i64 %iftmp.30.0, %tmp99 ; [#uses=1] br i1 %tmp132, label %cond_false148, label %cond_next136 diff --git a/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll b/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll index fc11347224b..db13fde9f67 100644 --- a/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll +++ b/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll @@ -9,10 +9,7 @@ cond_next127: ; preds = %cond_next391, %entry %tmp149 = mul i32 0, %v.1 ; [#uses=0] %tmp254 = and i32 0, 15 ; [#uses=1] %tmp256 = and i32 0, 15 ; [#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 ; [#uses=1] diff --git a/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll b/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll deleted file mode 100644 index 9c004f946b4..00000000000 --- a/test/CodeGen/X86/2007-11-14-Coalescer-Bug.ll +++ /dev/null @@ -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 } -@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* ; [#uses=1] - br i1 false, label %UnifiedReturnBlock, label %bb21 - -bb21: ; preds = %entry - %tmp27 = load i32* %tmp2526, align 4 ; [#uses=1] - %tmp29 = and i32 %tmp27, 255 ; [#uses=3] - %tmp2930 = trunc i32 %tmp29 to i8 ; [#uses=1] - %tmp37 = load i32* null, align 4 ; [#uses=1] - %tmp39 = and i32 %tmp37, 255 ; [#uses=2] - %tmp3940 = trunc i32 %tmp39 to i8 ; [#uses=1] - %tmp43 = add i32 %tmp29, -3 ; [#uses=1] - %tmp44 = icmp ult i32 %tmp43, 3 ; [#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 ; [#uses=1] - %tmp95 = load i32* %tmp94, align 4 ; [#uses=1] - %tmp9596 = trunc i32 %tmp95 to i8 ; [#uses=1] - %tmp98 = add i8 %tmp9596, -4 ; [#uses=1] - %tmp99 = icmp ugt i8 %tmp98, 5 ; [#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 ; [#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 ; [#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 -} diff --git a/test/CodeGen/X86/2008-10-16-SpillerBug.ll b/test/CodeGen/X86/2008-10-16-SpillerBug.ll deleted file mode 100644 index 87305a0b311..00000000000 --- a/test/CodeGen/X86/2008-10-16-SpillerBug.ll +++ /dev/null @@ -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)* } } -@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 ; [#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 ; [#uses=1] - %3 = load i16* %2, align 1 ; [#uses=3] - %4 = lshr i16 %3, 6 ; [#uses=1] - %5 = trunc i16 %4 to i8 ; [#uses=1] - %6 = zext i8 %5 to i32 ; [#uses=1] - %7 = trunc i16 %3 to i8 ; [#uses=1] - %8 = and i8 %7, 7 ; [#uses=1] - %mask5556 = zext i8 %8 to i32 ; [#uses=3] - %.sum1324 = add i32 %mask5556, 2 ; [#uses=1] - %.rec = add i32 %operation.0.rec, %.sum1324 ; [#uses=1] - %9 = bitcast %struct.YYToken* %operation.0 to i32* ; [#uses=1] - %10 = load i32* %9, align 1 ; [#uses=1] - %11 = lshr i32 %10, 16 ; [#uses=2] - %12 = trunc i32 %11 to i8 ; [#uses=1] - %13 = and i8 %12, 1 ; [#uses=1] - %14 = lshr i16 %3, 15 ; [#uses=1] - %15 = trunc i16 %14 to i8 ; [#uses=1] - %16 = or i8 %13, %15 ; [#uses=1] - %17 = icmp eq i8 %16, 0 ; [#uses=1] - br i1 %17, label %bb94, label %bb75 - -bb75: ; preds = %bb51 - %18 = getelementptr %struct.YYToken* %1, i32 0, i32 0, i32 0 ; [#uses=1] - %19 = load i16* %18, align 4 ; [#uses=1] - %20 = load i16* null, align 2 ; [#uses=1] - %21 = zext i16 %19 to i64 ; [#uses=1] - %22 = zext i16 %20 to i64 ; [#uses=1] - %23 = shl i64 %22, 16 ; [#uses=1] - %.ins1177 = or i64 %23, %21 ; [#uses=1] - %.ins1175 = or i64 %.ins1177, 0 ; [#uses=1] - %24 = and i32 %11, 1 ; [#uses=1] - %.neg1333 = sub i32 %mask5556, %24 ; [#uses=1] - %.neg1335 = sub i32 %.neg1333, 0 ; [#uses=1] - %25 = sub i32 %.neg1335, 0 ; [#uses=1] - br label %bb94 - -bb94: ; preds = %bb75, %bb51 - %extraToken.0 = phi i64 [ %.ins1175, %bb75 ], [ %extraToken.1, %bb51 ] ; [#uses=1] - %argCount.0 = phi i32 [ %25, %bb75 ], [ %mask5556, %bb51 ] ; [#uses=1] - %operation.0.sum1392 = add i32 %operation.0.rec, 1 ; [#uses=2] - %26 = getelementptr %struct.YYToken* %1, i32 %operation.0.sum1392, i32 0, i32 0 ; [#uses=1] - %27 = load i16* %26, align 4 ; [#uses=1] - %28 = getelementptr %struct.YYToken* %1, i32 %operation.0.sum1392, i32 0, i32 1 ; [#uses=1] - %29 = load i16* %28, align 2 ; [#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 ; [#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 ] ; [#uses=1] - %operation.0.rec = phi i32 [ 0, %entry ], [ %.rec, %bb94 ] ; [#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 -} diff --git a/test/CodeGen/X86/imp-def-copies.ll b/test/CodeGen/X86/imp-def-copies.ll deleted file mode 100644 index 91178403876..00000000000 --- a/test/CodeGen/X86/imp-def-copies.ll +++ /dev/null @@ -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 ] ; [#uses=1] - br i1 false, label %bb280, label %bb109 -bb109: ; preds = %bb - %tmp113 = icmp sgt i32 0, %prev_dir.0.reg2mem.0 ; [#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 ] ; [#uses=1] - br i1 false, label %return, label %bb -return: ; preds = %bb280, %entry - ret void -} diff --git a/test/CodeGen/X86/ins_subreg_coalesce-3.ll b/test/CodeGen/X86/ins_subreg_coalesce-3.ll index 8c1c4097660..63881e0ccb5 100644 --- a/test/CodeGen/X86/ins_subreg_coalesce-3.ll +++ b/test/CodeGen/X86/ins_subreg_coalesce-3.ll @@ -39,8 +39,7 @@ bb650: ; preds = %bb650, %bb428 %tmp659 = icmp eq i8 %tmp658, 0 ; [#uses=1] br i1 %tmp659, label %bb650, label %bb662 bb662: ; preds = %bb650 - %tmp685 = icmp eq %struct.rec* null, null ; [#uses=1] - br i1 %tmp685, label %bb761, label %bb688 + br label %bb761 bb688: ; preds = %bb662 ret void bb761: ; preds = %bb662