You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
@ -1,8 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | not grep sub
|
||||
|
||||
define void @test3(i32, i32) {
|
||||
add i32 0, 0 ; <i32>:3 [#uses=0]
|
||||
sub i32 0, 4 ; <i32>:4 [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
; This test shows a case where SCCP is incorrectly eliminating the PHI node
|
||||
; because it thinks it has a constant 0 value, when it really doesn't.
|
||||
|
||||
; RUN: opt < %s -sccp -S | grep phi
|
||||
|
||||
define i32 @test(i32 %A, i1 %c) {
|
||||
bb1:
|
||||
br label %BB2
|
||||
BB2: ; preds = %BB4, %bb1
|
||||
%V = phi i32 [ 0, %bb1 ], [ %A, %BB4 ] ; <i32> [#uses=1]
|
||||
br label %BB3
|
||||
BB3: ; preds = %BB2
|
||||
br i1 %c, label %BB4, label %BB5
|
||||
BB4: ; preds = %BB3
|
||||
br label %BB2
|
||||
BB5: ; preds = %BB3
|
||||
ret i32 %V
|
||||
}
|
||||
|
@ -1,33 +0,0 @@
|
||||
; This test shows SCCP "proving" that the loop (from bb6 to 14) loops infinitely
|
||||
; this is in fact NOT the case, so the return should still be alive in the code
|
||||
; after sccp and CFG simplification have been performed.
|
||||
;
|
||||
; RUN: opt < %s -sccp -simplifycfg -S | \
|
||||
; RUN: grep ret
|
||||
|
||||
define void @old_main() {
|
||||
bb3:
|
||||
br label %bb6
|
||||
bb6: ; preds = %bb14, %bb3
|
||||
%reg403 = phi i32 [ %reg155, %bb14 ], [ 0, %bb3 ] ; <i32> [#uses=1]
|
||||
%reg155 = add i32 %reg403, 1 ; <i32> [#uses=2]
|
||||
br label %bb11
|
||||
bb11: ; preds = %bb11, %bb6
|
||||
%reg407 = phi i32 [ %reg408, %bb11 ], [ 0, %bb6 ] ; <i32> [#uses=2]
|
||||
%reg408 = add i32 %reg407, 1 ; <i32> [#uses=1]
|
||||
%cond550 = icmp sle i32 %reg407, 1 ; <i1> [#uses=1]
|
||||
br i1 %cond550, label %bb11, label %bb12
|
||||
bb12: ; preds = %bb11
|
||||
br label %bb13
|
||||
bb13: ; preds = %bb13, %bb12
|
||||
%reg409 = phi i32 [ %reg410, %bb13 ], [ 0, %bb12 ] ; <i32> [#uses=1]
|
||||
%reg410 = add i32 %reg409, 1 ; <i32> [#uses=2]
|
||||
%cond552 = icmp sle i32 %reg410, 2 ; <i1> [#uses=1]
|
||||
br i1 %cond552, label %bb13, label %bb14
|
||||
bb14: ; preds = %bb13
|
||||
%cond553 = icmp sle i32 %reg155, 31 ; <i1> [#uses=1]
|
||||
br i1 %cond553, label %bb6, label %bb15
|
||||
bb15: ; preds = %bb14
|
||||
ret void
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | not grep %X
|
||||
|
||||
@G = external global [40 x i32] ; <[40 x i32]*> [#uses=1]
|
||||
|
||||
define i32* @test() {
|
||||
%X = getelementptr [40 x i32], [40 x i32]* @G, i64 0, i64 0 ; <i32*> [#uses=1]
|
||||
ret i32* %X
|
||||
}
|
||||
|
@ -1,30 +0,0 @@
|
||||
; RUN: opt < %s -sccp -simplifycfg -S | \
|
||||
; RUN: not grep then:
|
||||
|
||||
define void @cprop_test11(i32* %data.1) {
|
||||
entry:
|
||||
%tmp.1 = load i32, i32* %data.1 ; <i32> [#uses=3]
|
||||
%tmp.41 = icmp sgt i32 %tmp.1, 1 ; <i1> [#uses=1]
|
||||
br i1 %tmp.41, label %no_exit, label %loopexit
|
||||
no_exit: ; preds = %endif, %then, %entry
|
||||
%j.0 = phi i32 [ %j.0, %endif ], [ %i.0, %then ], [ 1, %entry ] ; <i32> [#uses=3]
|
||||
%i.0 = phi i32 [ %inc, %endif ], [ %inc1, %then ], [ 1, %entry ] ; <i32> [#uses=4]
|
||||
%tmp.8.not = icmp ne i32 %j.0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp.8.not, label %endif, label %then
|
||||
then: ; preds = %no_exit
|
||||
%inc1 = add i32 %i.0, 1 ; <i32> [#uses=3]
|
||||
%tmp.42 = icmp slt i32 %inc1, %tmp.1 ; <i1> [#uses=1]
|
||||
br i1 %tmp.42, label %no_exit, label %loopexit
|
||||
endif: ; preds = %no_exit
|
||||
%inc = add i32 %i.0, 1 ; <i32> [#uses=3]
|
||||
%tmp.4 = icmp slt i32 %inc, %tmp.1 ; <i1> [#uses=1]
|
||||
br i1 %tmp.4, label %no_exit, label %loopexit
|
||||
loopexit: ; preds = %endif, %then, %entry
|
||||
%j.1 = phi i32 [ 1, %entry ], [ %j.0, %endif ], [ %i.0, %then ] ; <i32> [#uses=1]
|
||||
%i.1 = phi i32 [ 1, %entry ], [ %inc, %endif ], [ %inc1, %then ] ; <i32> [#uses=1]
|
||||
%tmp.17 = getelementptr i32, i32* %data.1, i64 1 ; <i32*> [#uses=1]
|
||||
store i32 %j.1, i32* %tmp.17
|
||||
%tmp.23 = getelementptr i32, i32* %data.1, i64 2 ; <i32*> [#uses=1]
|
||||
store i32 %i.1, i32* %tmp.23
|
||||
ret void
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
; The PHI cannot be eliminated from this testcase, SCCP is mishandling invoke's!
|
||||
; RUN: opt < %s -sccp -S | grep phi
|
||||
|
||||
declare void @foo()
|
||||
|
||||
define i32 @test(i1 %cond) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
Entry:
|
||||
br i1 %cond, label %Inv, label %Cont
|
||||
Inv: ; preds = %Entry
|
||||
invoke void @foo( )
|
||||
to label %Ok unwind label %LPad
|
||||
Ok: ; preds = %Inv
|
||||
br label %Cont
|
||||
LPad:
|
||||
%val = landingpad { i8*, i32 }
|
||||
catch i8* null
|
||||
br label %Cont
|
||||
Cont: ; preds = %Ok, %Inv, %Entry
|
||||
%X = phi i32 [ 0, %Entry ], [ 1, %Ok ], [ 0, %LPad ] ; <i32> [#uses=1]
|
||||
ret i32 %X
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,18 +0,0 @@
|
||||
; RUN: opt < %s -sccp -disable-output
|
||||
|
||||
declare i32 @foo()
|
||||
|
||||
define void @caller() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
br i1 true, label %T, label %F
|
||||
F: ; preds = %0
|
||||
%X = invoke i32 @foo( )
|
||||
to label %T unwind label %LP ; <i32> [#uses=0]
|
||||
LP:
|
||||
%val = landingpad { i8*, i32 }
|
||||
catch i8* null
|
||||
br label %T
|
||||
T:
|
||||
ret void
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,12 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | grep "ret i32 1"
|
||||
|
||||
; This function definitely returns 1, even if we don't know the direction
|
||||
; of the branch.
|
||||
|
||||
define i32 @foo() {
|
||||
br i1 undef, label %T, label %T
|
||||
T: ; preds = %0, %0
|
||||
%X = add i32 0, 1 ; <i32> [#uses=1]
|
||||
ret i32 %X
|
||||
}
|
||||
|
@ -1,103 +0,0 @@
|
||||
; RUN: opt < %s -sccp -disable-output
|
||||
; END.
|
||||
target datalayout = "E-p:32:32"
|
||||
target triple = "powerpc-apple-darwin8.7.0"
|
||||
%struct.pat_list = type { i32, %struct.pat_list* }
|
||||
@JUMP = external global i32 ; <i32*> [#uses=1]
|
||||
@old_D_pat = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
|
||||
|
||||
define void @asearch1(i32 %D) {
|
||||
entry:
|
||||
%tmp80 = icmp ult i32 0, %D ; <i1> [#uses=1]
|
||||
br i1 %tmp80, label %bb647.preheader, label %cond_true81.preheader
|
||||
cond_true81.preheader: ; preds = %entry
|
||||
ret void
|
||||
bb647.preheader: ; preds = %entry
|
||||
%tmp3.i = call i32 @read( ) ; <i32> [#uses=1]
|
||||
%tmp6.i = add i32 %tmp3.i, 0 ; <i32> [#uses=1]
|
||||
%tmp653 = icmp sgt i32 %tmp6.i, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp653, label %cond_true654, label %UnifiedReturnBlock
|
||||
cond_true612: ; preds = %cond_true654
|
||||
ret void
|
||||
cond_next624: ; preds = %cond_true654
|
||||
ret void
|
||||
cond_true654: ; preds = %bb647.preheader
|
||||
br i1 undef, label %cond_true612, label %cond_next624
|
||||
UnifiedReturnBlock: ; preds = %bb647.preheader
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @bitap(i32 %D) {
|
||||
entry:
|
||||
%tmp29 = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp29, label %cond_next50, label %cond_next37
|
||||
cond_next37: ; preds = %entry
|
||||
ret void
|
||||
cond_next50: ; preds = %entry
|
||||
%tmp52 = icmp sgt i32 %D, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp52, label %cond_true53, label %cond_next71
|
||||
cond_true53: ; preds = %cond_next50
|
||||
%tmp54 = load i32, i32* @JUMP ; <i32> [#uses=1]
|
||||
%tmp55 = icmp eq i32 %tmp54, 1 ; <i1> [#uses=1]
|
||||
br i1 %tmp55, label %cond_true56, label %cond_next63
|
||||
cond_true56: ; preds = %cond_true53
|
||||
%tmp57 = bitcast i32 %D to i32 ; <i32> [#uses=1]
|
||||
call void @asearch1( i32 %tmp57 )
|
||||
ret void
|
||||
cond_next63: ; preds = %cond_true53
|
||||
ret void
|
||||
cond_next71: ; preds = %cond_next50
|
||||
ret void
|
||||
}
|
||||
|
||||
declare i32 @read()
|
||||
|
||||
define void @initial_value() {
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @main() {
|
||||
entry:
|
||||
br label %cond_next252
|
||||
cond_next208: ; preds = %cond_true260
|
||||
%tmp229 = call i32 @atoi( ) ; <i32> [#uses=1]
|
||||
br label %cond_next252
|
||||
bb217: ; preds = %cond_true260
|
||||
ret void
|
||||
cond_next252: ; preds = %cond_next208, %entry
|
||||
%D.0.0 = phi i32 [ 0, %entry ], [ %tmp229, %cond_next208 ] ; <i32> [#uses=1]
|
||||
%tmp254 = getelementptr i8*, i8** null, i32 1 ; <i8**> [#uses=1]
|
||||
%tmp256 = load i8*, i8** %tmp254 ; <i8*> [#uses=1]
|
||||
%tmp258 = load i8, i8* %tmp256 ; <i8> [#uses=1]
|
||||
%tmp259 = icmp eq i8 %tmp258, 45 ; <i1> [#uses=1]
|
||||
br i1 %tmp259, label %cond_true260, label %bb263
|
||||
cond_true260: ; preds = %cond_next252
|
||||
%tmp205818 = icmp sgt i8 0, -1 ; <i1> [#uses=1]
|
||||
br i1 %tmp205818, label %cond_next208, label %bb217
|
||||
bb263: ; preds = %cond_next252
|
||||
%tmp265 = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp265, label %cond_next276, label %cond_true266
|
||||
cond_true266: ; preds = %bb263
|
||||
ret void
|
||||
cond_next276: ; preds = %bb263
|
||||
%tmp278 = icmp eq i32 0, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp278, label %cond_next298, label %cond_true279
|
||||
cond_true279: ; preds = %cond_next276
|
||||
ret void
|
||||
cond_next298: ; preds = %cond_next276
|
||||
call void @bitap( i32 %D.0.0 )
|
||||
ret void
|
||||
}
|
||||
|
||||
declare i32 @atoi()
|
||||
|
||||
define void @subset_pset() {
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @strcmp() {
|
||||
entry:
|
||||
ret void
|
||||
}
|
@ -1,140 +0,0 @@
|
||||
; Test VectorType handling by SCCP.
|
||||
; SCCP ignores VectorTypes until PR 1034 is fixed
|
||||
;
|
||||
; RUN: opt < %s -sccp
|
||||
; END.
|
||||
|
||||
target datalayout = "E-p:32:32"
|
||||
target triple = "powerpc-apple-darwin8"
|
||||
%struct.GLDAlphaTest = type { float, i16, i8, i8 }
|
||||
%struct.GLDArrayRange = type { i8, i8, i8, i8 }
|
||||
%struct.GLDBlendMode = type { i16, i16, i16, i16, %struct.GLTColor4, i16, i16, i8, i8, i8, i8 }
|
||||
%struct.GLDBufferRec = type opaque
|
||||
%struct.GLDBufferstate = type { %struct.GLTDimensions, %struct.GLTDimensions, %struct.GLTFixedColor4, %struct.GLTFixedColor4, i8, i8, i8, i8, [2 x %struct.GLSBuffer], [4 x %struct.GLSBuffer], %struct.GLSBuffer, %struct.GLSBuffer, %struct.GLSBuffer, [4 x %struct.GLSBuffer*], %struct.GLSBuffer*, %struct.GLSBuffer*, %struct.GLSBuffer*, i8, i8 }
|
||||
%struct.GLDClearColor = type { double, %struct.GLTColor4, %struct.GLTColor4, float, i32 }
|
||||
%struct.GLDClipPlane = type { i32, [6 x %struct.GLTColor4] }
|
||||
%struct.GLDColorBuffer = type { i16, i16, [4 x i16] }
|
||||
%struct.GLDColorMatrix = type { [16 x float]*, %struct.GLDImagingColorScale }
|
||||
%struct.GLDContextRec = type { float, float, float, float, float, float, float, float, %struct.GLTColor4, %struct.GLTColor4, %struct.GLVMFPContext, %struct.GLDTextureMachine, %struct.GLGProcessor, %struct._GLVMConstants*, void (%struct.GLDContextRec*, i32, i32, %struct.GLVMFragmentAttribRec*, %struct.GLVMFragmentAttribRec*, i32)*, %struct._GLVMFunction*, void (%struct.GLDContextRec*, %struct.GLDVertex*)*, void (%struct.GLDContextRec*, %struct.GLDVertex*, %struct.GLDVertex*)*, void (%struct.GLDContextRec*, %struct.GLDVertex*, %struct.GLDVertex*, %struct.GLDVertex*)*, %struct._GLVMFunction*, %struct._GLVMFunction*, %struct._GLVMFunction*, i32, i32, i32, float, float, float, i32, %struct.GLSDrawable, %struct.GLDFramebufferAttachment, %struct.GLDFormat, %struct.GLDBufferstate, %struct.GLDSharedRec*, %struct.GLDState*, %struct.GLDPluginState*, %struct.GLTDimensions, %struct.GLTColor4*, %struct.GLTColor4*, %struct.GLVMFragmentAttribRec*, %struct.GLVMFragmentAttribRec*, %struct.GLVMFragmentAttribRec*, %struct.GLDPipelineProgramRec*, %struct.GLDStateProgramRec, %struct.GLVMTextures, { [4 x i8*], i8*, i8* }, [64 x float], %struct.GLDStippleData, i16, i8, i8, i32, %struct.GLDFramebufferRec*, i8, %struct.GLDQueryRec*, %struct.GLDQueryRec* }
|
||||
%struct.GLDConvolution = type { %struct.GLTColor4, %struct.GLDImagingColorScale, i16, i16, float*, i32, i32 }
|
||||
%struct.GLDDepthTest = type { i16, i16, i8, i8, i8, i8, double, double }
|
||||
%struct.GLDFogMode = type { %struct.GLTColor4, float, float, float, float, float, i16, i16, i16, i8, i8 }
|
||||
%struct.GLDFormat = type { i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, i32 }
|
||||
%struct.GLDFramebufferAttachment = type { i32, i32, i32, i32, i32, i32 }
|
||||
%struct.GLDFramebufferData = type { [6 x %struct.GLDFramebufferAttachment], [4 x i16], i16, i16, i16, i16, i32 }
|
||||
%struct.GLDFramebufferRec = type { %struct.GLDFramebufferData*, %struct.GLDPluginFramebufferData*, %struct.GLDPixelFormat }
|
||||
%struct.GLDHintMode = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
|
||||
%struct.GLDHistogram = type { %struct.GLTFixedColor4*, i32, i16, i8, i8 }
|
||||
%struct.GLDImagingColorScale = type { { float, float }, { float, float }, { float, float }, { float, float } }
|
||||
%struct.GLDImagingSubset = type { %struct.GLDConvolution, %struct.GLDConvolution, %struct.GLDConvolution, %struct.GLDColorMatrix, %struct.GLDMinmax, %struct.GLDHistogram, %struct.GLDImagingColorScale, %struct.GLDImagingColorScale, %struct.GLDImagingColorScale, %struct.GLDImagingColorScale, i32 }
|
||||
%struct.GLDLight = type { %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, %struct.GLTCoord3, float, float, float, float, float, %struct.GLTCoord3, float, float, float, float, float }
|
||||
%struct.GLDLightModel = type { %struct.GLTColor4, [8 x %struct.GLDLight], [2 x %struct.GLDMaterial], i32, i16, i16, i16, i8, i8, i8, i8, i8, i8 }
|
||||
%struct.GLDLightProduct = type { %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4 }
|
||||
%struct.GLDLineMode = type { float, i32, i16, i16, i8, i8, i8, i8 }
|
||||
%struct.GLDLogicOp = type { i16, i8, i8 }
|
||||
%struct.GLDMaskMode = type { i32, [3 x i32], i8, i8, i8, i8, i8, i8, i8, i8 }
|
||||
%struct.GLDMaterial = type { %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, float, float, float, float, [8 x %struct.GLDLightProduct], %struct.GLTColor4, [6 x i32], [2 x i32] }
|
||||
%struct.GLDMinmax = type { %struct.GLDMinmaxTable*, i16, i8, i8 }
|
||||
%struct.GLDMinmaxTable = type { %struct.GLTColor4, %struct.GLTColor4 }
|
||||
%struct.GLDMipmaplevel = type { [4 x i32], [4 x float], [4 x i32], [4 x i32], [4 x float], [4 x i32], [3 x i32], i32, float*, float*, float*, i32, i32, i8*, i16, i16, i16, i16 }
|
||||
%struct.GLDMultisample = type { float, i8, i8, i8, i8, i8, i8, i8, i8 }
|
||||
%struct.GLDPipelineProgramData = type { i16, i16, i32, %struct._PPStreamToken*, i64, %struct.GLDShaderSourceData*, %struct.GLTColor4*, i32 }
|
||||
%struct.GLDPipelineProgramRec = type { %struct.GLDPipelineProgramData*, %struct._PPStreamToken*, %struct._PPStreamToken*, %struct._GLVMFunction*, i32, i32, i32 }
|
||||
%struct.GLDPipelineProgramState = type { i8, i8, i8, i8, %struct.GLTColor4* }
|
||||
%struct.GLDPixelFormat = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
|
||||
%struct.GLDPixelMap = type { i32*, float*, float*, float*, float*, float*, float*, float*, float*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
|
||||
%struct.GLDPixelMode = type { float, float, %struct.GLDPixelStore, %struct.GLDPixelTransfer, %struct.GLDPixelMap, %struct.GLDImagingSubset, i32, i32 }
|
||||
%struct.GLDPixelPack = type { i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8 }
|
||||
%struct.GLDPixelStore = type { %struct.GLDPixelPack, %struct.GLDPixelPack }
|
||||
%struct.GLDPixelTransfer = 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.GLDPluginFramebufferData = type { [6 x %struct.GLDTextureRec*], i32, i32 }
|
||||
%struct.GLDPluginProgramData = type { [3 x %struct.GLDPipelineProgramRec*], %struct.GLDBufferRec**, i32 }
|
||||
%struct.GLDPluginState = type { [16 x [5 x %struct.GLDTextureRec*]], [3 x %struct.GLDTextureRec*], [16 x %struct.GLDTextureRec*], [3 x %struct.GLDPipelineProgramRec*], %struct.GLDProgramRec*, %struct.GLDVertexArrayRec*, [16 x %struct.GLDBufferRec*], %struct.GLDFramebufferRec*, %struct.GLDFramebufferRec* }
|
||||
%struct.GLDPointMode = type { float, float, float, float, %struct.GLTCoord3, float, i8, i8, i8, i8, i16, i16, i32, i16, i16 }
|
||||
%struct.GLDPolygonMode = type { [128 x i8], float, float, i16, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8 }
|
||||
%struct.GLDProgramData = type { i32, [16 x i32], i32, i32, i32, i32 }
|
||||
%struct.GLDProgramRec = type { %struct.GLDProgramData*, %struct.GLDPluginProgramData*, i32 }
|
||||
%struct.GLDQueryRec = type { i32, i32, %struct.GLDQueryRec* }
|
||||
%struct.GLDRect = type { i32, i32, i32, i32, i32, i32 }
|
||||
%struct.GLDRegisterCombiners = type { i8, i8, i8, i8, i32, [2 x %struct.GLTColor4], [8 x %struct.GLDRegisterCombinersPerStageState], %struct.GLDRegisterCombinersFinalStageState }
|
||||
%struct.GLDRegisterCombinersFinalStageState = type { i8, i8, i8, i8, [7 x %struct.GLDRegisterCombinersPerVariableState] }
|
||||
%struct.GLDRegisterCombinersPerPortionState = type { [4 x %struct.GLDRegisterCombinersPerVariableState], i8, i8, i8, i8, i16, i16, i16, i16, i16, i16 }
|
||||
%struct.GLDRegisterCombinersPerStageState = type { [2 x %struct.GLDRegisterCombinersPerPortionState], [2 x %struct.GLTColor4] }
|
||||
%struct.GLDRegisterCombinersPerVariableState = type { i16, i16, i16, i16 }
|
||||
%struct.GLDScissorTest = type { %struct.GLTFixedColor4, i8, i8, i8, i8 }
|
||||
%struct.GLDShaderSourceData = type { i32, i32, i8*, i32*, i32, i32, i8*, i32*, i8* }
|
||||
%struct.GLDSharedRec = type opaque
|
||||
%struct.GLDState = type { i16, i16, i32, i32, i32, [256 x %struct.GLTColor4], [128 x %struct.GLTColor4], %struct.GLDViewport, %struct.GLDTransform, %struct.GLDLightModel, i32*, i32, i32, i32, %struct.GLDAlphaTest, %struct.GLDBlendMode, %struct.GLDClearColor, %struct.GLDColorBuffer, %struct.GLDDepthTest, %struct.GLDArrayRange, %struct.GLDFogMode, %struct.GLDHintMode, %struct.GLDLineMode, %struct.GLDLogicOp, %struct.GLDMaskMode, %struct.GLDPixelMode, %struct.GLDPointMode, %struct.GLDPolygonMode, %struct.GLDScissorTest, i32, %struct.GLDStencilTest, [16 x %struct.GLDTextureMode], %struct.GLDArrayRange, [8 x %struct.GLDTextureCoordGen], %struct.GLDClipPlane, %struct.GLDMultisample, %struct.GLDRegisterCombiners, %struct.GLDArrayRange, %struct.GLDArrayRange, [3 x %struct.GLDPipelineProgramState], %struct.GLDTransformFeedback }
|
||||
%struct.GLDStateProgramRec = type { %struct.GLDPipelineProgramData*, %struct.GLDPipelineProgramRec* }
|
||||
%struct.GLDStencilTest = type { [3 x { i32, i32, i16, i16, i16, i16 }], i32, [4 x i8] }
|
||||
%struct.GLDStippleData = type { i32, i16, i16, [32 x [32 x i8]] }
|
||||
%struct.GLDTextureCoordGen = type { { i16, i16, %struct.GLTColor4, %struct.GLTColor4 }, { i16, i16, %struct.GLTColor4, %struct.GLTColor4 }, { i16, i16, %struct.GLTColor4, %struct.GLTColor4 }, { i16, i16, %struct.GLTColor4, %struct.GLTColor4 }, i8, i8, i8, i8 }
|
||||
%struct.GLDTextureGeomState = type { i16, i16, i16, i16, i16, i8, i8, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [6 x i16], [6 x i16] }
|
||||
%struct.GLDTextureLevel = type { i32, i32, i16, i16, i16, i8, i8, i16, i16, i16, i16, i8* }
|
||||
%struct.GLDTextureMachine = type { [8 x %struct.GLDTextureRec*], %struct.GLDTextureRec*, i8, i8, i8, i8 }
|
||||
%struct.GLDTextureMode = type { %struct.GLTColor4, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, float, float, float, i16, i16, i16, i16, i16, i16, [4 x i16], i8, i8, i8, i8, [3 x float], [4 x float], float, float }
|
||||
%struct.GLDTextureParamState = type { i16, i16, i16, i16, i16, i16, %struct.GLTColor4, float, float, float, float, i16, i16, i16, i16, float, i16, i8, i8, i32, i8* }
|
||||
%struct.GLDTextureRec = type { %struct.GLDTextureState*, i32, [2 x float], float, i32, float, float, float, float, float, float, %struct.GLDMipmaplevel*, %struct.GLDMipmaplevel*, i32, i32, i32, i32, i32, i32, %struct.GLDTextureParamState, i32, [2 x %struct._PPStreamToken] }
|
||||
%struct.GLDTextureState = type { i16, i16, i16, float, i32, i16, %struct.GLISWRSurface*, i8, i8, i8, i8, %struct.GLDTextureParamState, %struct.GLDTextureGeomState, %struct.GLDTextureLevel, [6 x [15 x %struct.GLDTextureLevel]] }
|
||||
%struct.GLDTransform = type { [24 x [16 x float]], [24 x [16 x float]], [16 x float], float, float, float, float, i32, float, i16, i16, i8, i8, i8, i8 }
|
||||
%struct.GLDTransformFeedback = type { i8, i8, i8, [16 x i32], [16 x i32] }
|
||||
%struct.GLDVertex = type { %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, %struct.GLTColor4, %struct.GLTCoord3, float, %struct.GLTColor4, float, float, float, i8, i8, i8, i8, [4 x float], [2 x %struct.GLDMaterial*], i32, i32, [8 x %struct.GLTColor4] }
|
||||
%struct.GLDVertexArrayRec = type opaque
|
||||
%struct.GLDViewport = type { float, float, float, float, float, float, float, float, double, double, i32, i32, i32, i32, float, float, float, float }
|
||||
%struct.GLGColorTable = type { i32, i32, i32, i8* }
|
||||
%struct.GLGOperation = type { i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, %struct.GLGColorTable, %struct.GLGColorTable, %struct.GLGColorTable }
|
||||
%struct.GLGProcessor = type { void (%struct.GLDPixelMode*, %struct.GLGOperation*, %struct._GLGFunctionKey*)*, %struct._GLVMFunction*, %struct._GLGFunctionKey* }
|
||||
%struct.GLISWRSurface = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i8*, i8*, [4 x i8*], i32 }
|
||||
%struct.GLIWindow = type { i32, i32, i32 }
|
||||
%struct.GLSBuffer = type { i8* }
|
||||
%struct.GLSDrawable = type { %struct.GLSWindowRec* }
|
||||
%struct.GLSWindowRec = type { %struct.GLTDimensions, %struct.GLTDimensions, i32, i32, %struct.GLSDrawable, [2 x i8*], i8*, i8*, i8*, [4 x i8*], i32, i32, i32, i32, [4 x i32], i16, i16, i16, %struct.GLIWindow, i32, i32, i8*, i8* }
|
||||
%struct.GLTColor4 = type { float, float, float, float }
|
||||
%struct.GLTCoord3 = type { float, float, float }
|
||||
%struct.GLTDimensions = type { i32, i32 }
|
||||
%struct.GLTFixedColor4 = type { i32, i32, i32, i32 }
|
||||
%struct.GLVMFPContext = type { float, i32, i32, i32 }
|
||||
%struct.GLVMFragmentAttribRec = type { <4 x float>, <4 x float>, <4 x float>, <4 x float>, [8 x <4 x float>] }
|
||||
%struct.GLVMTextures = type { [8 x %struct.GLDTextureRec*] }
|
||||
%struct._GLGFunctionKey = type opaque
|
||||
%struct._GLVMConstants = type opaque
|
||||
%struct._GLVMFunction = type opaque
|
||||
%struct._PPStreamToken = type { { i16, i8, i8, i32 } }
|
||||
|
||||
define void @gldLLVMVecPointRender(%struct.GLDContextRec* %ctx) {
|
||||
entry:
|
||||
%tmp.uip = getelementptr %struct.GLDContextRec, %struct.GLDContextRec* %ctx, i32 0, i32 22 ; <i32*> [#uses=1]
|
||||
%tmp = load i32, i32* %tmp.uip ; <i32> [#uses=3]
|
||||
%tmp91 = lshr i32 %tmp, 5 ; <i32> [#uses=1]
|
||||
%tmp92 = trunc i32 %tmp91 to i1 ; <i1> [#uses=1]
|
||||
br i1 %tmp92, label %cond_true93, label %cond_next116
|
||||
cond_true93: ; preds = %entry
|
||||
%tmp.upgrd.1 = getelementptr %struct.GLDContextRec, %struct.GLDContextRec* %ctx, i32 0, i32 31, i32 14 ; <i32*> [#uses=1]
|
||||
%tmp95 = load i32, i32* %tmp.upgrd.1 ; <i32> [#uses=1]
|
||||
%tmp95.upgrd.2 = sitofp i32 %tmp95 to float ; <float> [#uses=1]
|
||||
%tmp108 = fmul float undef, %tmp95.upgrd.2 ; <float> [#uses=1]
|
||||
br label %cond_next116
|
||||
cond_next116: ; preds = %cond_true93, %entry
|
||||
%point_size.2 = phi float [ %tmp108, %cond_true93 ], [ undef, %entry ] ; <float> [#uses=2]
|
||||
%tmp457 = fcmp olt float %point_size.2, 1.000000e+00 ; <i1> [#uses=1]
|
||||
%tmp460 = lshr i32 %tmp, 6 ; <i32> [#uses=1]
|
||||
%tmp461 = trunc i32 %tmp460 to i1 ; <i1> [#uses=1]
|
||||
br i1 %tmp457, label %cond_true458, label %cond_next484
|
||||
cond_true458: ; preds = %cond_next116
|
||||
br i1 %tmp461, label %cond_true462, label %cond_next487
|
||||
cond_true462: ; preds = %cond_true458
|
||||
%tmp26 = bitcast i32 %tmp to i32 ; <i32> [#uses=1]
|
||||
%tmp465 = and i32 %tmp26, 128 ; <i32> [#uses=1]
|
||||
%tmp466 = icmp eq i32 %tmp465, 0 ; <i1> [#uses=1]
|
||||
br i1 %tmp466, label %cond_true467, label %cond_next487
|
||||
cond_true467: ; preds = %cond_true462
|
||||
ret void
|
||||
cond_next484: ; preds = %cond_next116
|
||||
%tmp486 = fmul float %point_size.2, 5.000000e-01 ; <float> [#uses=1]
|
||||
br label %cond_next487
|
||||
cond_next487: ; preds = %cond_next484, %cond_true462, %cond_true458
|
||||
%radius.0 = phi float [ %tmp486, %cond_next484 ], [ 5.000000e-01, %cond_true458 ], [ 5.000000e-01, %cond_true462 ] ; <float> [#uses=2]
|
||||
%tmp494 = insertelement <4 x float> zeroinitializer, float %radius.0, i32 2 ; <<4 x float>> [#uses=1]
|
||||
%tmp495 = insertelement <4 x float> %tmp494, float %radius.0, i32 3 ; <<4 x float>> [#uses=0]
|
||||
ret void
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | \
|
||||
; RUN: grep "ret i1 false"
|
||||
|
||||
define i1 @foo() {
|
||||
%X = and i1 false, undef ; <i1> [#uses=1]
|
||||
ret i1 %X
|
||||
}
|
||||
|
@ -1,45 +0,0 @@
|
||||
; RUN: opt < %s -sccp -disable-output
|
||||
; PR1431
|
||||
|
||||
define void @_ada_bench() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
entry:
|
||||
br label %cond_next
|
||||
cond_next: ; preds = %cond_next, %entry
|
||||
%indvar46 = phi i32 [ 0, %entry ], [ %indvar.next47, %cond_next ] ; <i32> [#uses=1]
|
||||
%indvar.next47 = add i32 %indvar46, 1 ; <i32> [#uses=2]
|
||||
%exitcond48 = icmp eq i32 %indvar.next47, 10000 ; <i1> [#uses=1]
|
||||
br i1 %exitcond48, label %cond_next40, label %cond_next
|
||||
cond_next40: ; preds = %cond_next40, %cond_next
|
||||
%indvar43 = phi i32 [ %indvar.next44, %cond_next40 ], [ 0, %cond_next ] ; <i32> [#uses=1]
|
||||
%indvar.next44 = add i32 %indvar43, 1 ; <i32> [#uses=2]
|
||||
%exitcond45 = icmp eq i32 %indvar.next44, 10000 ; <i1> [#uses=1]
|
||||
br i1 %exitcond45, label %cond_next53, label %cond_next40
|
||||
cond_next53: ; preds = %cond_next53, %cond_next40
|
||||
%indvar41 = phi i32 [ %indvar.next42, %cond_next53 ], [ 0, %cond_next40 ] ; <i32> [#uses=1]
|
||||
%indvar.next42 = add i32 %indvar41, 1 ; <i32> [#uses=2]
|
||||
%exitcond = icmp eq i32 %indvar.next42, 10000 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %bb67, label %cond_next53
|
||||
bb67: ; preds = %cond_next53
|
||||
%tmp112 = invoke double @sin( double 5.000000e-01 )
|
||||
to label %bb114 unwind label %cleanup ; <double> [#uses=0]
|
||||
bb114: ; preds = %bb67
|
||||
%tmp147 = invoke double @log( double 5.000000e-01 )
|
||||
to label %bb149 unwind label %cleanup ; <double> [#uses=0]
|
||||
bb149: ; preds = %bb114
|
||||
%tmp175 = invoke double @sqrt( double 5.000000e-01 )
|
||||
to label %bb177 unwind label %cleanup ; <double> [#uses=0]
|
||||
bb177: ; preds = %bb149
|
||||
unreachable
|
||||
cleanup: ; preds = %bb149, %bb114, %bb67
|
||||
%val = landingpad { i8*, i32 }
|
||||
cleanup
|
||||
resume { i8*, i32 } %val
|
||||
}
|
||||
|
||||
declare double @sin(double)
|
||||
|
||||
declare double @log(double)
|
||||
|
||||
declare double @sqrt(double)
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,36 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | grep undef | count 1
|
||||
; PR1938
|
||||
|
||||
define i32 @main() {
|
||||
entry:
|
||||
br label %bb
|
||||
|
||||
bb:
|
||||
%indvar = phi i32 [ 0, %entry ], [ %k, %bb.backedge ]
|
||||
%k = add i32 %indvar, 1
|
||||
br i1 undef, label %cond_true, label %cond_false
|
||||
|
||||
cond_true:
|
||||
%tmp97 = icmp slt i32 %k, 10
|
||||
br i1 %tmp97, label %bb.backedge, label %bb12
|
||||
|
||||
bb.backedge:
|
||||
br label %bb
|
||||
|
||||
cond_false:
|
||||
%tmp9 = icmp slt i32 %k, 10
|
||||
br i1 %tmp9, label %bb.backedge, label %bb12
|
||||
|
||||
bb12:
|
||||
%tmp14 = icmp eq i32 %k, 10
|
||||
br i1 %tmp14, label %cond_next18, label %cond_true17
|
||||
|
||||
cond_true17:
|
||||
tail call void @abort( )
|
||||
unreachable
|
||||
|
||||
cond_next18:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
declare void @abort()
|
@ -1,11 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | grep "ret i32 %Z"
|
||||
; rdar://5778210
|
||||
|
||||
declare {i32, i32} @bar(i32 %A)
|
||||
|
||||
define i32 @foo() {
|
||||
%X = call {i32, i32} @bar(i32 17)
|
||||
%Y = extractvalue {i32, i32} %X, 0
|
||||
%Z = add i32 %Y, %Y
|
||||
ret i32 %Z
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | not grep "ret i32 undef"
|
||||
; PR2358
|
||||
target datalayout =
|
||||
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||
target triple = "i686-pc-linux-gnu"
|
||||
|
||||
define i32 @x(i32 %b) {
|
||||
entry:
|
||||
%val = call i32 @llvm.cttz.i32(i32 undef, i1 true)
|
||||
ret i32 %val
|
||||
}
|
||||
|
||||
declare i32 @llvm.cttz.i32(i32, i1)
|
||||
|
@ -1,26 +0,0 @@
|
||||
; RUN: opt < %s -ipsccp -S | grep "ret i32 42"
|
||||
; RUN: opt < %s -ipsccp -S | grep "ret i32 undef"
|
||||
; PR3325
|
||||
|
||||
define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
|
||||
%tmp1 = invoke i32 @f()
|
||||
to label %UnifiedReturnBlock unwind label %lpad
|
||||
|
||||
lpad:
|
||||
%val = landingpad { i8*, i32 }
|
||||
cleanup
|
||||
unreachable
|
||||
|
||||
UnifiedReturnBlock:
|
||||
ret i32 %tmp1
|
||||
}
|
||||
|
||||
define internal i32 @f() {
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
declare i8* @__cxa_begin_catch(i8*) nounwind
|
||||
|
||||
declare void @__cxa_end_catch()
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
@ -1,10 +0,0 @@
|
||||
; RUN: opt < %s -sccp -disable-output
|
||||
; PR4277
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%0 = tail call signext i8 (...) @sin() nounwind
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
declare signext i8 @sin(...)
|
@ -1,23 +0,0 @@
|
||||
; RUN: opt < %s -sccp -S | grep "ret i101 12"
|
||||
|
||||
@Y = constant [6 x i101] [ i101 12, i101 123456789000000, i101 -12,i101
|
||||
-123456789000000, i101 0,i101 9123456789000000]
|
||||
|
||||
define i101 @array()
|
||||
{
|
||||
Head:
|
||||
%A = getelementptr [6 x i101], [6 x i101]* @Y, i32 0, i32 1
|
||||
|
||||
%B = load i101, i101* %A
|
||||
%C = icmp sge i101 %B, 1
|
||||
br i1 %C, label %True, label %False
|
||||
True:
|
||||
%D = and i101 %B, 1
|
||||
%E = trunc i101 %D to i32
|
||||
%F = getelementptr [6 x i101], [6 x i101]* @Y, i32 0, i32 %E
|
||||
%G = load i101, i101* %F
|
||||
br label %False
|
||||
False:
|
||||
%H = phi i101 [%G, %True], [-1, %Head]
|
||||
ret i101 %H
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
; This is a basic sanity check for constant propagation. The add instruction
|
||||
; should be eliminated.
|
||||
|
||||
; RUN: opt < %s -sccp -S | not grep add
|
||||
|
||||
define i128 @test(i1 %B) {
|
||||
br i1 %B, label %BB1, label %BB2
|
||||
BB1:
|
||||
%Val = add i128 0, 1
|
||||
br label %BB3
|
||||
BB2:
|
||||
br label %BB3
|
||||
BB3:
|
||||
%Ret = phi i128 [%Val, %BB1], [2, %BB2]
|
||||
ret i128 %Ret
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
; This is a basic sanity check for constant propagation. The add instruction
|
||||
; and phi instruction should be eliminated.
|
||||
|
||||
; RUN: opt < %s -sccp -S | not grep phi
|
||||
; RUN: opt < %s -sccp -S | not grep add
|
||||
|
||||
define i128 @test(i1 %B) {
|
||||
br i1 %B, label %BB1, label %BB2
|
||||
BB1:
|
||||
%Val = add i128 0, 1
|
||||
br label %BB3
|
||||
BB2:
|
||||
br label %BB3
|
||||
BB3:
|
||||
%Ret = phi i128 [%Val, %BB1], [1, %BB2]
|
||||
ret i128 %Ret
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user