You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.246
Former-commit-id: 0c7ce5b1a7851e13f22acfd379b7f9fb304e4833
This commit is contained in:
parent
a7724cd563
commit
279aa8f685
8
external/llvm/test/Transforms/InstCombine/2003-05-26-CastMiscompile.ll
vendored
Normal file
8
external/llvm/test/Transforms/InstCombine/2003-05-26-CastMiscompile.ll
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
; RUN: opt < %s -instcombine -S | grep 4294967295
|
||||
|
||||
define i64 @test(i64 %Val) {
|
||||
%tmp.3 = trunc i64 %Val to i32 ; <i32> [#uses=1]
|
||||
%tmp.8 = zext i32 %tmp.3 to i64 ; <i64> [#uses=1]
|
||||
ret i64 %tmp.8
|
||||
}
|
||||
|
10
external/llvm/test/Transforms/InstCombine/2003-05-27-ConstExprCrash.ll
vendored
Normal file
10
external/llvm/test/Transforms/InstCombine/2003-05-27-ConstExprCrash.ll
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
@X = global i32 5 ; <i32*> [#uses=1]
|
||||
|
||||
define i64 @test() {
|
||||
%C = add i64 1, 2 ; <i64> [#uses=1]
|
||||
%V = add i64 ptrtoint (i32* @X to i64), %C ; <i64> [#uses=1]
|
||||
ret i64 %V
|
||||
}
|
||||
|
16
external/llvm/test/Transforms/InstCombine/2003-06-05-BranchInvertInfLoop.ll
vendored
Normal file
16
external/llvm/test/Transforms/InstCombine/2003-06-05-BranchInvertInfLoop.ll
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
; This testcase causes an infinite loop in the instruction combiner,
|
||||
; because it things that the constant value is a not expression... and
|
||||
; constantly inverts the branch back and forth.
|
||||
;
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
define i8 @test19(i1 %c) {
|
||||
br i1 true, label %True, label %False
|
||||
|
||||
True: ; preds = %0
|
||||
ret i8 1
|
||||
|
||||
False: ; preds = %0
|
||||
ret i8 3
|
||||
}
|
||||
|
44
external/llvm/test/Transforms/InstCombine/2003-07-21-ExternalConstant.ll
vendored
Normal file
44
external/llvm/test/Transforms/InstCombine/2003-07-21-ExternalConstant.ll
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
;
|
||||
; Test: ExternalConstant
|
||||
;
|
||||
; Description:
|
||||
; This regression test helps check whether the instruction combining
|
||||
; optimization pass correctly handles global variables which are marked
|
||||
; as external and constant.
|
||||
;
|
||||
; If a problem occurs, we should die on an assert(). Otherwise, we
|
||||
; should pass through the optimizer without failure.
|
||||
;
|
||||
; Extra code:
|
||||
; RUN: opt < %s -instcombine
|
||||
; END.
|
||||
|
||||
target datalayout = "e-p:32:32"
|
||||
@silly = external constant i32 ; <i32*> [#uses=1]
|
||||
|
||||
declare void @bzero(i8*, i32)
|
||||
|
||||
declare void @bcopy(i8*, i8*, i32)
|
||||
|
||||
declare i32 @bcmp(i8*, i8*, i32)
|
||||
|
||||
declare i32 @fputs(i8*, i8*)
|
||||
|
||||
declare i32 @fputs_unlocked(i8*, i8*)
|
||||
|
||||
define i32 @function(i32 %a.1) {
|
||||
entry:
|
||||
%a.0 = alloca i32 ; <i32*> [#uses=2]
|
||||
%result = alloca i32 ; <i32*> [#uses=2]
|
||||
store i32 %a.1, i32* %a.0
|
||||
%tmp.0 = load i32, i32* %a.0 ; <i32> [#uses=1]
|
||||
%tmp.1 = load i32, i32* @silly ; <i32> [#uses=1]
|
||||
%tmp.2 = add i32 %tmp.0, %tmp.1 ; <i32> [#uses=1]
|
||||
store i32 %tmp.2, i32* %result
|
||||
br label %return
|
||||
|
||||
return: ; preds = %entry
|
||||
%tmp.3 = load i32, i32* %result ; <i32> [#uses=1]
|
||||
ret i32 %tmp.3
|
||||
}
|
||||
|
21
external/llvm/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll
vendored
Normal file
21
external/llvm/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
; This testcase can be simplified by "realizing" that alloca can never return
|
||||
; null.
|
||||
; RUN: opt < %s -instcombine -simplifycfg -S | FileCheck %s
|
||||
; CHECK-NOT: br
|
||||
|
||||
declare i32 @bitmap_clear(...)
|
||||
|
||||
define i32 @oof() {
|
||||
entry:
|
||||
%live_head = alloca i32 ; <i32*> [#uses=2]
|
||||
%tmp.1 = icmp ne i32* %live_head, null ; <i1> [#uses=1]
|
||||
br i1 %tmp.1, label %then, label %UnifiedExitNode
|
||||
|
||||
then: ; preds = %entry
|
||||
%tmp.4 = call i32 (...) @bitmap_clear( i32* %live_head ) ; <i32> [#uses=0]
|
||||
br label %UnifiedExitNode
|
||||
|
||||
UnifiedExitNode: ; preds = %then, %entry
|
||||
ret i32 0
|
||||
}
|
||||
|
7
external/llvm/test/Transforms/InstCombine/2003-09-09-VolatileLoadElim.ll
vendored
Normal file
7
external/llvm/test/Transforms/InstCombine/2003-09-09-VolatileLoadElim.ll
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
; RUN: opt < %s -instcombine -S | grep load
|
||||
|
||||
define void @test(i32* %P) {
|
||||
; Dead but not deletable!
|
||||
%X = load volatile i32, i32* %P ; <i32> [#uses=0]
|
||||
ret void
|
||||
}
|
18
external/llvm/test/Transforms/InstCombine/2003-10-29-CallSiteResolve.ll
vendored
Normal file
18
external/llvm/test/Transforms/InstCombine/2003-10-29-CallSiteResolve.ll
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
declare i32* @bar()
|
||||
|
||||
define float* @foo() personality i32 (...)* @__gxx_personality_v0 {
|
||||
%tmp.11 = invoke float* bitcast (i32* ()* @bar to float* ()*)( )
|
||||
to label %invoke_cont unwind label %X ; <float*> [#uses=1]
|
||||
|
||||
invoke_cont: ; preds = %0
|
||||
ret float* %tmp.11
|
||||
|
||||
X: ; preds = %0
|
||||
%exn = landingpad {i8*, i32}
|
||||
cleanup
|
||||
ret float* null
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
13
external/llvm/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll
vendored
Normal file
13
external/llvm/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
; The cast in this testcase is not eliminable on a 32-bit target!
|
||||
; RUN: opt < %s -instcombine -S | grep inttoptr
|
||||
|
||||
target datalayout = "e-p:32:32"
|
||||
|
||||
declare void @foo(...)
|
||||
|
||||
define void @test(i64 %X) {
|
||||
%Y = inttoptr i64 %X to i32* ; <i32*> [#uses=1]
|
||||
call void (...) @foo( i32* %Y )
|
||||
ret void
|
||||
}
|
||||
|
31
external/llvm/test/Transforms/InstCombine/2004-01-13-InstCombineInvokePHI.ll
vendored
Normal file
31
external/llvm/test/Transforms/InstCombine/2004-01-13-InstCombineInvokePHI.ll
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
; Test for a problem afflicting several C++ programs in the testsuite. The
|
||||
; instcombine pass is trying to get rid of the cast in the invoke instruction,
|
||||
; inserting a cast of the return value after the PHI instruction, but which is
|
||||
; used by the PHI instruction. This is bad: because of the semantics of the
|
||||
; invoke instruction, we really cannot perform this transformation at all at
|
||||
; least without splitting the critical edge.
|
||||
;
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
declare i8* @test()
|
||||
|
||||
define i32 @foo() personality i32 (...)* @__gxx_personality_v0 {
|
||||
entry:
|
||||
br i1 true, label %cont, label %call
|
||||
|
||||
call: ; preds = %entry
|
||||
%P = invoke i32* bitcast (i8* ()* @test to i32* ()*)( )
|
||||
to label %cont unwind label %N ; <i32*> [#uses=1]
|
||||
|
||||
cont: ; preds = %call, %entry
|
||||
%P2 = phi i32* [ %P, %call ], [ null, %entry ] ; <i32*> [#uses=1]
|
||||
%V = load i32, i32* %P2 ; <i32> [#uses=1]
|
||||
ret i32 %V
|
||||
|
||||
N: ; preds = %call
|
||||
%exn = landingpad {i8*, i32}
|
||||
cleanup
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
15
external/llvm/test/Transforms/InstCombine/2004-02-23-ShiftShiftOverflow.ll
vendored
Normal file
15
external/llvm/test/Transforms/InstCombine/2004-02-23-ShiftShiftOverflow.ll
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
; RUN: opt < %s -instcombine -S | not grep 34
|
||||
|
||||
define i32 @test(i32 %X) {
|
||||
; Do not fold into shr X, 34, as this uses undefined behavior!
|
||||
%Y = ashr i32 %X, 17 ; <i32> [#uses=1]
|
||||
%Z = ashr i32 %Y, 17 ; <i32> [#uses=1]
|
||||
ret i32 %Z
|
||||
}
|
||||
|
||||
define i32 @test2(i32 %X) {
|
||||
; Do not fold into shl X, 34, as this uses undefined behavior!
|
||||
%Y = shl i32 %X, 17 ; <i32> [#uses=1]
|
||||
%Z = shl i32 %Y, 17 ; <i32> [#uses=1]
|
||||
ret i32 %Z
|
||||
}
|
13
external/llvm/test/Transforms/InstCombine/2004-03-13-InstCombineInfLoop.ll
vendored
Normal file
13
external/llvm/test/Transforms/InstCombine/2004-03-13-InstCombineInfLoop.ll
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
; This testcase caused the combiner to go into an infinite loop, moving the
|
||||
; cast back and forth, changing the seteq to operate on int vs uint and back.
|
||||
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
define i1 @test(i32 %A, i32 %B) {
|
||||
%C = sub i32 0, %A ; <i32> [#uses=1]
|
||||
%Cc = bitcast i32 %C to i32 ; <i32> [#uses=1]
|
||||
%D = sub i32 0, %B ; <i32> [#uses=1]
|
||||
%E = icmp eq i32 %Cc, %D ; <i1> [#uses=1]
|
||||
ret i1 %E
|
||||
}
|
||||
|
10
external/llvm/test/Transforms/InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll
vendored
Normal file
10
external/llvm/test/Transforms/InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
define i32 @test() {
|
||||
ret i32 0
|
||||
|
||||
Loop: ; preds = %Loop
|
||||
%X = add i32 %X, 1 ; <i32> [#uses=1]
|
||||
br label %Loop
|
||||
}
|
||||
|
10
external/llvm/test/Transforms/InstCombine/2004-05-07-UnsizedCastLoad.ll
vendored
Normal file
10
external/llvm/test/Transforms/InstCombine/2004-05-07-UnsizedCastLoad.ll
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
%Ty = type opaque
|
||||
|
||||
define i32 @test(%Ty* %X) {
|
||||
%Y = bitcast %Ty* %X to i32* ; <i32*> [#uses=1]
|
||||
%Z = load i32, i32* %Y ; <i32> [#uses=1]
|
||||
ret i32 %Z
|
||||
}
|
||||
|
9
external/llvm/test/Transforms/InstCombine/2004-07-27-ConstantExprMul.ll
vendored
Normal file
9
external/llvm/test/Transforms/InstCombine/2004-07-27-ConstantExprMul.ll
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
; RUN: opt < %s -instcombine -disable-output
|
||||
|
||||
@p = weak global i32 0 ; <i32*> [#uses=1]
|
||||
|
||||
define i32 @test(i32 %x) {
|
||||
%y = mul i32 %x, ptrtoint (i32* @p to i32) ; <i32> [#uses=1]
|
||||
ret i32 %y
|
||||
}
|
||||
|
9
external/llvm/test/Transforms/InstCombine/2004-08-09-RemInfLoop.ll
vendored
Normal file
9
external/llvm/test/Transforms/InstCombine/2004-08-09-RemInfLoop.ll
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
; RUN: opt < %s -instcombine
|
||||
|
||||
; This testcase should not send the instcombiner into an infinite loop!
|
||||
|
||||
define i32 @test(i32 %X) {
|
||||
%Y = srem i32 %X, 0 ; <i32> [#uses=1]
|
||||
ret i32 %Y
|
||||
}
|
||||
|
8
external/llvm/test/Transforms/InstCombine/2004-08-10-BoolSetCC.ll
vendored
Normal file
8
external/llvm/test/Transforms/InstCombine/2004-08-10-BoolSetCC.ll
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
; RUN: opt < %s -instcombine -S | \
|
||||
; RUN: grep "ret i1 false"
|
||||
|
||||
define i1 @test(i1 %V) {
|
||||
%Y = icmp ult i1 %V, false ; <i1> [#uses=1]
|
||||
ret i1 %Y
|
||||
}
|
||||
|
18
external/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine.ll
vendored
Normal file
18
external/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine.ll
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
; RUN: opt < %s -instcombine -mem2reg -S | \
|
||||
; RUN: not grep "i32 1"
|
||||
|
||||
; When propagating the load through the select, make sure that the load is
|
||||
; inserted where the original load was, not where the select is. Not doing
|
||||
; so could produce incorrect results!
|
||||
|
||||
define i32 @test(i1 %C) {
|
||||
%X = alloca i32 ; <i32*> [#uses=3]
|
||||
%X2 = alloca i32 ; <i32*> [#uses=2]
|
||||
store i32 1, i32* %X
|
||||
store i32 2, i32* %X2
|
||||
%Y = select i1 %C, i32* %X, i32* %X2 ; <i32*> [#uses=1]
|
||||
store i32 3, i32* %X
|
||||
%Z = load i32, i32* %Y ; <i32> [#uses=1]
|
||||
ret i32 %Z
|
||||
}
|
||||
|
25
external/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll
vendored
Normal file
25
external/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
; RUN: opt < %s -instcombine -mem2reg -simplifycfg | \
|
||||
; RUN: llvm-dis | grep -v store | not grep "i32 1"
|
||||
|
||||
; Test to make sure that instcombine does not accidentally propagate the load
|
||||
; into the PHI, which would break the program.
|
||||
|
||||
define i32 @test(i1 %C) {
|
||||
entry:
|
||||
%X = alloca i32 ; <i32*> [#uses=3]
|
||||
%X2 = alloca i32 ; <i32*> [#uses=2]
|
||||
store i32 1, i32* %X
|
||||
store i32 2, i32* %X2
|
||||
br i1 %C, label %cond_true.i, label %cond_continue.i
|
||||
|
||||
cond_true.i: ; preds = %entry
|
||||
br label %cond_continue.i
|
||||
|
||||
cond_continue.i: ; preds = %cond_true.i, %entry
|
||||
%mem_tmp.i.0 = phi i32* [ %X, %cond_true.i ], [ %X2, %entry ] ; <i32*> [#uses=1]
|
||||
store i32 3, i32* %X
|
||||
%tmp.3 = load i32, i32* %mem_tmp.i.0 ; <i32> [#uses=1]
|
||||
ret i32 %tmp.3
|
||||
}
|
||||
|
||||
|
9
external/llvm/test/Transforms/InstCombine/2004-09-28-BadShiftAndSetCC.ll
vendored
Normal file
9
external/llvm/test/Transforms/InstCombine/2004-09-28-BadShiftAndSetCC.ll
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
; RUN: opt < %s -instcombine -S | not grep -- -65536
|
||||
|
||||
define i1 @test(i32 %tmp.124) {
|
||||
%tmp.125 = shl i32 %tmp.124, 8 ; <i32> [#uses=1]
|
||||
%tmp.126.mask = and i32 %tmp.125, -16777216 ; <i32> [#uses=1]
|
||||
%tmp.128 = icmp eq i32 %tmp.126.mask, 167772160 ; <i1> [#uses=1]
|
||||
ret i1 %tmp.128
|
||||
}
|
||||
|
10
external/llvm/test/Transforms/InstCombine/2004-11-22-Missed-and-fold.ll
vendored
Normal file
10
external/llvm/test/Transforms/InstCombine/2004-11-22-Missed-and-fold.ll
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: opt < %s -instcombine -S | not grep and
|
||||
|
||||
define i8 @test21(i8 %A) {
|
||||
;; sign extend
|
||||
%C = ashr i8 %A, 7 ; <i8> [#uses=1]
|
||||
;; chop off sign
|
||||
%D = and i8 %C, 1 ; <i8> [#uses=1]
|
||||
ret i8 %D
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user