forked from OSchip/llvm-project
For PR950:
Update the test suite to accommodate the change from signed integer types to signless integer types. The changes were of only a few kinds: 1. Make sure llvm-upgrade is run on the source which does the bulk of the changes automatically. 2. Change things like "grep 'int'" to "grep 'i32'" 3. In several tests bitcasting caused the same name to be reused in the same type plane. These had to be manually fixed. The fix was (generally) to leave the bitcast and provide the instruction with a new name. This should not affect the semantics of the test. In a few cases, the bitcasts were known to be superfluous and irrelevant to the test case so they were removed. 4. One test case uses a bytecode file which needed to be updated to the latest bytecode format. llvm-svn: 32789
This commit is contained in:
parent
e63b6518fa
commit
deb4d5ab46
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store int 0'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store i32 0'
|
||||
|
||||
void %test({int,int }* %P) {
|
||||
%Q = getelementptr {int,int}* %P, int 1
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'load int\* %A'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'load i32\* %A'
|
||||
|
||||
declare double* %useit(int*)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'ret int 0'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | grep 'ret i32 0'
|
||||
declare void %foo(int*)
|
||||
declare void %bar()
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -globalsmodref-aa -load-vn -gcse -instcombine | llvm-dis | grep 'ret int 0'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | \
|
||||
; RUN: opt -globalsmodref-aa -load-vn -gcse -instcombine | llvm-dis | \
|
||||
; RUN: grep 'ret i32 0'
|
||||
%G = internal global int* null
|
||||
|
||||
implementation
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Check to make sure that Value Numbering doesn't merge casts of different
|
||||
; flavors.
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -load-vn -gcse | llvm-dis | \
|
||||
; RUN: grep '[sz]ext' | wc -l | grep 2
|
||||
; RUN: grep '[sz]ext' | wc -l | grep 2
|
||||
|
||||
declare void %external(int)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; This file takes about 48 __MINUTES__ to assemble using as. This is WAY too
|
||||
; long. The type resolution code needs to be sped up a lot.
|
||||
; RUN: ulimit -t 20; llvm-as < %s
|
||||
; RUN: ulimit -t 20; llvm-upgrade < %s | llvm-as
|
||||
|
||||
%ALL_INTERSECTIONS_METHOD = type int (%OBJECT*, %RAY*, %ISTACK*)*
|
||||
%BBOX = type { %BBOX_VECT, %BBOX_VECT }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: (llvm-as < %s 2>&1) | grep Expected
|
||||
; RUN: llvm-upgrade < %s | llvm-as 2>&1 >/dev/null | grep Expected
|
||||
; Test the case of a misformed constant initializer
|
||||
; This should cause an assembler error, not an assertion failure!
|
||||
%X = constant {int} { float 1.0 }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; Found by inspection of the code
|
||||
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f 2>&1 | grep "Shift constant expression"
|
||||
; RUN: llvm-upgrade < %s | llvm-as 2>&1 > /dev/null | grep "Shift constant expression"
|
||||
|
||||
global int shr (float 1.0, ubyte 2)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; Found by inspection of the code
|
||||
; RUN: llvm-as < %s 2>&1 | grep "Illegal"
|
||||
; RUN: llvm-upgrade < %s | llvm-as 2>&1 > /dev/null | grep "Illegal"
|
||||
|
||||
global {} { int 7, float 1.0, int 7, int 8 }
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep ' bitcast ('
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | not grep ' bitcast ('
|
||||
|
||||
%.Base64_1 = external constant [4 x sbyte]
|
||||
|
||||
ubyte %test(sbyte %X) { ; No predecessors!
|
||||
%X = cast sbyte %X to ubyte ; <ubyte> [#uses=1]
|
||||
ubyte %test(sbyte %Y) { ; No predecessors!
|
||||
%X = cast sbyte %Y to ubyte ; <ubyte> [#uses=1]
|
||||
%tmp.13 = add ubyte %X, cast (sbyte sub (sbyte 0, sbyte cast ([4 x sbyte]* %.Base64_1 to sbyte)) to ubyte) ; <ubyte> [#uses=1]
|
||||
ret ubyte %tmp.13
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
; RUN: llvm-as < %s 2>&1 | grep 'Reference to an undefined type'
|
||||
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f 2>&1 | \
|
||||
; RUN: grep 'Reference to an undefined type'
|
||||
|
||||
|
||||
%d_reduction_0_dparser_gram = global { int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)*, int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)** } { int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)* null, int (sbyte*, sbyte**, int, int, { %struct.Grammar*, void (\4, %struct.d_loc_t*, sbyte**)*, %struct.D_Scope*, void (\4)*, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }* (\4, int, { int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\9, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }**)*, void ({ int, %struct.d_loc_t, sbyte*, sbyte*, %struct.D_Scope*, void (\8, %struct.d_loc_t*, sbyte**)*, %struct.Grammar*, %struct.ParseNode_User }*)*, %struct.d_loc_t, int, int, int, int, int, int, int, int, int, int, int, int }*)** null }
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;; The bytecode writer was trying to treat undef values as ConstantArray's when
|
||||
;; they looked like strings.
|
||||
;; RUN: llvm-as < %s -o /dev/null -f
|
||||
;; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
|
||||
%G = internal global [8 x sbyte] undef
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// XFAIL: llvmgcc3
|
||||
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'uint 1,' &&
|
||||
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'uint 2,'
|
||||
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'i32 1,' &&
|
||||
// RUN: %llvmgxx -O0 -emit-llvm -S -g -o - %s | grep 'i32 2,'
|
||||
|
||||
class A {
|
||||
public:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %llvmgcc %s -S -g -o - | grep 'llvm.dbg.stoppoint.*uint 14'
|
||||
// RUN: %llvmgcc %s -S -g -o - | grep 'llvm.dbg.stoppoint.*i32 14'
|
||||
// PR664: ensure that line #'s are emitted for declarations
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %llvmgcc -S %s -o - | grep 'llvm.ctlz.i32(uint' &&
|
||||
// RUN: %llvmgcc -S %s -o - | not grep 'llvm.ctlz.i32(int'
|
||||
// RUN: %llvmgcc -S %s -o - | grep 'llvm.ctlz.i32(i32'
|
||||
// RUNMEIFWEHADSIGNEDTYPES: %llvmgcc -S %s -o - | not grep 'llvm.ctlz.i32(i32'
|
||||
|
||||
unsigned t2(unsigned X) {
|
||||
return __builtin_clz(X);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %llvmgcc %s -S -o - | gccas | llvm-dis | grep nate | grep 'global int 0'
|
||||
// RUN: %llvmgcc %s -S -o - | gccas | llvm-dis | grep nate | grep 'global i32 0'
|
||||
|
||||
struct X { int *XX; int Y;};
|
||||
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
implementation ; Functions:
|
||||
|
||||
void %f(int %a, ...) {
|
||||
void %f(int %a_arg, ...) {
|
||||
entry:
|
||||
%a = cast int %a to uint ; <uint> [#uses=1]
|
||||
%a = cast int %a_arg to uint ; <uint> [#uses=1]
|
||||
%l1 = alloca sbyte*, align 4 ; <sbyte**> [#uses=5]
|
||||
%l2 = alloca sbyte*, align 4 ; <sbyte**> [#uses=4]
|
||||
%memtmp = alloca sbyte* ; <sbyte**> [#uses=2]
|
||||
call void %llvm.va_start( sbyte** %l1 )
|
||||
%tmp22 = seteq int %a, 0 ; <bool> [#uses=1]
|
||||
%tmp22 = seteq int %a_arg, 0 ; <bool> [#uses=1]
|
||||
%tmp23 = volatile load sbyte** %l1 ; <sbyte*> [#uses=2]
|
||||
br bool %tmp22, label %bb8, label %bb
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
; Make sure this testcase codegens to the bic instruction
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=alpha | grep 'zapnot'
|
||||
; RUN: llvm-as < %s | llc -march=alpha | grep 'zapnot'
|
||||
|
||||
implementation ; Functions:
|
||||
|
||||
ushort %foo(long %y) {
|
||||
define i16 @zext %foo(i64 %y) {
|
||||
entry:
|
||||
%tmp.1 = cast long %y to ushort ; <ushort> [#uses=1]
|
||||
ret ushort %tmp.1
|
||||
%tmp.1 = trunc i64 %y to i16 ; <ushort> [#uses=1]
|
||||
ret i16 %tmp.1
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | llc
|
||||
float %t(long %u) {
|
||||
%u = cast long %u to ulong ; <ulong> [#uses=1]
|
||||
float %t(long %u_arg) {
|
||||
%u = cast long %u_arg to ulong ; <ulong> [#uses=1]
|
||||
%tmp5 = add ulong %u, 9007199254740991 ; <ulong> [#uses=1]
|
||||
%tmp = setgt ulong %tmp5, 18014398509481982 ; <bool> [#uses=1]
|
||||
br bool %tmp, label %T, label %F
|
||||
|
|
|
@ -239,19 +239,19 @@ cond_next1834: ; preds = %bb1808
|
|||
ret void
|
||||
|
||||
bb1876: ; preds = %bb1808
|
||||
%tmp1877 = load int* %which_alternative ; <int> [#uses=4]
|
||||
%tmp1877 = cast int %tmp1877 to uint ; <uint> [#uses=1]
|
||||
%tmp1877signed = load int* %which_alternative ; <int> [#uses=4]
|
||||
%tmp1877 = cast int %tmp1877signed to uint ; <uint> [#uses=1]
|
||||
%bothcond699 = setlt uint %tmp1877, 2 ; <bool> [#uses=1]
|
||||
%tmp1888 = seteq int %tmp1877, 2 ; <bool> [#uses=1]
|
||||
%tmp1888 = seteq int %tmp1877signed, 2 ; <bool> [#uses=1]
|
||||
%bothcond700 = or bool %bothcond699, %tmp1888 ; <bool> [#uses=1]
|
||||
%bothcond700.not = xor bool %bothcond700, true ; <bool> [#uses=1]
|
||||
%tmp1894 = seteq int %tmp1877, 3 ; <bool> [#uses=1]
|
||||
%tmp1894 = seteq int %tmp1877signed, 3 ; <bool> [#uses=1]
|
||||
%bothcond701 = or bool %tmp1894, %bothcond700.not ; <bool> [#uses=1]
|
||||
%bothcond702 = or bool %bothcond701, false ; <bool> [#uses=1]
|
||||
br bool %bothcond702, label %UnifiedReturnBlock, label %cond_next1902
|
||||
|
||||
cond_next1902: ; preds = %bb1876
|
||||
switch int %tmp1877, label %cond_next1937 [
|
||||
switch int %tmp1877signed, label %cond_next1937 [
|
||||
int 0, label %bb1918
|
||||
int 1, label %bb1918
|
||||
int 2, label %bb1918
|
||||
|
|
|
@ -19,7 +19,6 @@ bb: ; preds = %bb, %entry
|
|||
]
|
||||
|
||||
bb7: ; preds = %bb, %bb
|
||||
%tmp = cast sbyte %tmp to ubyte ; <ubyte> [#uses=1]
|
||||
tail call void %foo( ubyte %tmp )
|
||||
ret sbyte* %tmp2
|
||||
}
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | llc
|
||||
|
||||
void %iterative_hash_host_wide_int() {
|
||||
%zero = alloca int ; <int*> [#uses=2]
|
||||
%b = alloca uint ; <uint*> [#uses=1]
|
||||
%zero = alloca int ; <int*> [#uses=2]
|
||||
%b = alloca uint ; <uint*> [#uses=1]
|
||||
store int 0, int* %zero
|
||||
%tmp = load int* %zero ; <int> [#uses=1]
|
||||
%tmp = load int* %zero ; <int> [#uses=1]
|
||||
%tmp5 = cast int %tmp to uint ; <uint> [#uses=1]
|
||||
%tmp6 = add uint %tmp5, 32 ; <uint> [#uses=1]
|
||||
%tmp6 = cast uint %tmp6 to int ; <int> [#uses=1]
|
||||
%tmp7 = load long* null ; <long> [#uses=1]
|
||||
%tmp6.u = add uint %tmp5, 32 ; <uint> [#uses=1]
|
||||
%tmp6 = cast uint %tmp6.u to int ; <int> [#uses=1]
|
||||
%tmp7 = load long* null ; <long> [#uses=1]
|
||||
%tmp6 = cast int %tmp6 to ubyte ; <ubyte> [#uses=1]
|
||||
%tmp8 = shr long %tmp7, ubyte %tmp6 ; <long> [#uses=1]
|
||||
%tmp8 = shr long %tmp7, ubyte %tmp6 ; <long> [#uses=1]
|
||||
%tmp8 = cast long %tmp8 to uint ; <uint> [#uses=1]
|
||||
store uint %tmp8, uint* %b
|
||||
unreachable
|
||||
|
|
|
@ -10,7 +10,8 @@ void %test(ubyte* %P) {
|
|||
ret void
|
||||
}
|
||||
|
||||
ushort %test2(ushort %crc) { ; No and's should be needed for the ushorts here.
|
||||
ushort @zext %test2(ushort @zext %crc) {
|
||||
; No and's should be needed for the ushorts here.
|
||||
%tmp.1 = shr ushort %crc, ubyte 1
|
||||
%tmp.7 = xor ushort %tmp.1, 40961
|
||||
ret ushort %tmp.7
|
||||
|
|
|
@ -9,10 +9,10 @@ implementation ; Functions:
|
|||
|
||||
void %foo(int %W, int %X, int %Y, int %Z) {
|
||||
entry:
|
||||
%X = cast int %X to uint ; <uint> [#uses=1]
|
||||
%Y = cast int %Y to uint ; <uint> [#uses=1]
|
||||
%Z = cast int %Z to uint ; <uint> [#uses=1]
|
||||
%W = cast int %W to uint ; <uint> [#uses=1]
|
||||
%X.u = cast int %X to uint ; <uint> [#uses=1]
|
||||
%Y.u = cast int %Y to uint ; <uint> [#uses=1]
|
||||
%Z.u = cast int %Z to uint ; <uint> [#uses=1]
|
||||
%W.u = cast int %W to uint ; <uint> [#uses=1]
|
||||
%tmp1 = and int %W, 1 ; <int> [#uses=1]
|
||||
%tmp1 = seteq int %tmp1, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp1, label %cond_false, label %bb5
|
||||
|
@ -21,7 +21,7 @@ bb: ; preds = %bb5, %bb
|
|||
%indvar77 = phi uint [ %indvar.next78, %bb ], [ 0, %bb5 ] ; <uint> [#uses=1]
|
||||
%tmp2 = tail call int (...)* %bar( ) ; <int> [#uses=0]
|
||||
%indvar.next78 = add uint %indvar77, 1 ; <uint> [#uses=2]
|
||||
%exitcond79 = seteq uint %indvar.next78, %X ; <bool> [#uses=1]
|
||||
%exitcond79 = seteq uint %indvar.next78, %X.u ; <bool> [#uses=1]
|
||||
br bool %exitcond79, label %cond_next48, label %bb
|
||||
|
||||
bb5: ; preds = %entry
|
||||
|
@ -37,7 +37,7 @@ bb12: ; preds = %bb16, %bb12
|
|||
%indvar72 = phi uint [ %indvar.next73, %bb12 ], [ 0, %bb16 ] ; <uint> [#uses=1]
|
||||
%tmp13 = tail call int (...)* %bar( ) ; <int> [#uses=0]
|
||||
%indvar.next73 = add uint %indvar72, 1 ; <uint> [#uses=2]
|
||||
%exitcond74 = seteq uint %indvar.next73, %Y ; <bool> [#uses=1]
|
||||
%exitcond74 = seteq uint %indvar.next73, %Y.u ; <bool> [#uses=1]
|
||||
br bool %exitcond74, label %cond_next48, label %bb12
|
||||
|
||||
bb16: ; preds = %cond_false
|
||||
|
@ -53,7 +53,7 @@ bb25: ; preds = %bb29, %bb25
|
|||
%indvar67 = phi uint [ %indvar.next68, %bb25 ], [ 0, %bb29 ] ; <uint> [#uses=1]
|
||||
%tmp26 = tail call int (...)* %bar( ) ; <int> [#uses=0]
|
||||
%indvar.next68 = add uint %indvar67, 1 ; <uint> [#uses=2]
|
||||
%exitcond69 = seteq uint %indvar.next68, %Z ; <bool> [#uses=1]
|
||||
%exitcond69 = seteq uint %indvar.next68, %Z.u ; <bool> [#uses=1]
|
||||
br bool %exitcond69, label %cond_next48, label %bb25
|
||||
|
||||
bb29: ; preds = %cond_false20
|
||||
|
@ -72,9 +72,8 @@ bb38: ; preds = %bb42
|
|||
|
||||
bb42: ; preds = %cond_false33, %bb38
|
||||
%indvar = phi uint [ %indvar.next, %bb38 ], [ 0, %cond_false33 ] ; <uint> [#uses=3]
|
||||
%indvar = cast uint %indvar to int ; <int> [#uses=1]
|
||||
%W_addr.0 = sub int %W, %indvar ; <int> [#uses=1]
|
||||
%exitcond = seteq uint %indvar, %W ; <bool> [#uses=1]
|
||||
%exitcond = seteq uint %indvar, %W.u ; <bool> [#uses=1]
|
||||
br bool %exitcond, label %cond_next48, label %bb38
|
||||
|
||||
cond_next48: ; preds = %bb, %bb12, %bb25, %bb42, %cond_false33, %bb29, %bb16, %bb5
|
||||
|
|
|
@ -7,12 +7,11 @@ implementation ; Functions:
|
|||
int %rotlw(uint %x, int %sh) {
|
||||
entry:
|
||||
%tmp.3 = cast int %sh to ubyte ; <ubyte> [#uses=1]
|
||||
%x = cast uint %x to int ; <int> [#uses=1]
|
||||
%x.s = cast uint %x to int ; <int> [#uses=1]
|
||||
%tmp.7 = sub int 32, %sh ; <int> [#uses=1]
|
||||
%tmp.9 = cast int %tmp.7 to ubyte ; <ubyte> [#uses=1]
|
||||
%tmp.10 = shr uint %x, ubyte %tmp.9 ; <uint> [#uses=1]
|
||||
%tmp.4 = shl int %x, ubyte %tmp.3 ; <int> [#uses=1]
|
||||
%tmp.10 = cast uint %tmp.10 to int ; <int> [#uses=1]
|
||||
%tmp.4 = shl int %x.s, ubyte %tmp.3 ; <int> [#uses=1]
|
||||
%tmp.12 = or int %tmp.10, %tmp.4 ; <int> [#uses=1]
|
||||
ret int %tmp.12
|
||||
}
|
||||
|
@ -23,19 +22,17 @@ entry:
|
|||
%tmp.4 = shr uint %x, ubyte %tmp.3 ; <uint> [#uses=1]
|
||||
%tmp.7 = sub int 32, %sh ; <int> [#uses=1]
|
||||
%tmp.9 = cast int %tmp.7 to ubyte ; <ubyte> [#uses=1]
|
||||
%x = cast uint %x to int ; <int> [#uses=1]
|
||||
%tmp.4 = cast uint %tmp.4 to int ; <int> [#uses=1]
|
||||
%tmp.10 = shl int %x, ubyte %tmp.9 ; <int> [#uses=1]
|
||||
%x.s = cast uint %x to int ; <int> [#uses=1]
|
||||
%tmp.10 = shl int %x.s, ubyte %tmp.9 ; <int> [#uses=1]
|
||||
%tmp.12 = or int %tmp.4, %tmp.10 ; <int> [#uses=1]
|
||||
ret int %tmp.12
|
||||
}
|
||||
|
||||
int %rotlwi(uint %x) {
|
||||
entry:
|
||||
%x = cast uint %x to int ; <int> [#uses=1]
|
||||
%x.s = cast uint %x to int ; <int> [#uses=1]
|
||||
%tmp.7 = shr uint %x, ubyte 27 ; <uint> [#uses=1]
|
||||
%tmp.3 = shl int %x, ubyte 5 ; <int> [#uses=1]
|
||||
%tmp.7 = cast uint %tmp.7 to int ; <int> [#uses=1]
|
||||
%tmp.3 = shl int %x.s, ubyte 5 ; <int> [#uses=1]
|
||||
%tmp.9 = or int %tmp.3, %tmp.7 ; <int> [#uses=1]
|
||||
ret int %tmp.9
|
||||
}
|
||||
|
@ -43,9 +40,8 @@ entry:
|
|||
int %rotrwi(uint %x) {
|
||||
entry:
|
||||
%tmp.3 = shr uint %x, ubyte 5 ; <uint> [#uses=1]
|
||||
%x = cast uint %x to int ; <int> [#uses=1]
|
||||
%tmp.3 = cast uint %tmp.3 to int ; <int> [#uses=1]
|
||||
%tmp.7 = shl int %x, ubyte 27 ; <int> [#uses=1]
|
||||
%x.s = cast uint %x to int ; <int> [#uses=1]
|
||||
%tmp.7 = shl int %x.s, ubyte 27 ; <int> [#uses=1]
|
||||
%tmp.9 = or int %tmp.3, %tmp.7 ; <int> [#uses=1]
|
||||
ret int %tmp.9
|
||||
}
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=ppc32 | not grep 'extsh\|rlwinm'
|
||||
|
||||
declare short %foo()
|
||||
declare short @sext %foo()
|
||||
|
||||
int %test1(short %X) {
|
||||
int %test1(short @sext %X) {
|
||||
%Y = cast short %X to int ;; dead
|
||||
ret int %Y
|
||||
}
|
||||
|
||||
int %test2(ushort %X) {
|
||||
int %test2(ushort @zext %X) {
|
||||
%Y = cast ushort %X to int
|
||||
%Z = and int %Y, 65535 ;; dead
|
||||
ret int %Z
|
||||
|
@ -48,8 +47,7 @@ uint %test6(uint* %P) {
|
|||
ret uint %tmp.2
|
||||
}
|
||||
|
||||
ushort %test7(float %a) {
|
||||
ushort @zext %test7(float %a) {
|
||||
%tmp.1 = cast float %a to ushort
|
||||
ret ushort %tmp.1
|
||||
}
|
||||
|
||||
|
|
|
@ -62,10 +62,10 @@ void %splat_h(short %tmp, <16 x ubyte>* %dst) {
|
|||
void %spltish(<16 x ubyte>* %A, <16 x ubyte>* %B) {
|
||||
; Gets converted to 16 x ubyte
|
||||
%tmp = load <16 x ubyte>* %B
|
||||
%tmp = cast <16 x ubyte> %tmp to <16 x sbyte>
|
||||
%tmp4 = sub <16 x sbyte> %tmp, cast (<8 x short> < short 15, short 15, short 15, short 15, short 15, short 15, short 15, short 15 > to <16 x sbyte>)
|
||||
%tmp4 = cast <16 x sbyte> %tmp4 to <16 x ubyte>
|
||||
store <16 x ubyte> %tmp4, <16 x ubyte>* %A
|
||||
%tmp.s = cast <16 x ubyte> %tmp to <16 x sbyte>
|
||||
%tmp4 = sub <16 x sbyte> %tmp.s, cast (<8 x short> < short 15, short 15, short 15, short 15, short 15, short 15, short 15, short 15 > to <16 x sbyte>)
|
||||
%tmp4.u = cast <16 x sbyte> %tmp4 to <16 x ubyte>
|
||||
store <16 x ubyte> %tmp4.u, <16 x ubyte>* %A
|
||||
ret void
|
||||
}
|
||||
|
||||
|
|
|
@ -11,10 +11,8 @@ int %compare(sbyte* %a, sbyte* %b) {
|
|||
%tmp4 = getelementptr ubyte* %tmp, uint %tmp3 ; <ubyte*> [#uses=1]
|
||||
%tmp7 = load uint* %tmp ; <uint> [#uses=1]
|
||||
%tmp8 = getelementptr ubyte* %tmp, uint %tmp7 ; <ubyte*> [#uses=1]
|
||||
%tmp8 = cast ubyte* %tmp8 to sbyte* ; <sbyte*> [#uses=1]
|
||||
%tmp4 = cast ubyte* %tmp4 to sbyte* ; <sbyte*> [#uses=1]
|
||||
%tmp = tail call int %memcmp( sbyte* %tmp8, sbyte* %tmp4, uint %tmp ) ; <int> [#uses=1]
|
||||
ret int %tmp
|
||||
%result = tail call int %memcmp( sbyte* %tmp8, sbyte* %tmp4, uint %tmp ) ; <int> [#uses=1]
|
||||
ret int %result
|
||||
}
|
||||
|
||||
declare int %memcmp(sbyte*, sbyte*, uint)
|
||||
|
|
|
@ -10,8 +10,8 @@ ilog2.exit: ; preds = %entry
|
|||
%tmp24.i = load int* null ; <int> [#uses=1]
|
||||
%tmp13.i12.i = tail call double %ldexp( double 0.000000e+00, int 0 ) ; <double> [#uses=1]
|
||||
%tmp13.i13.i = cast double %tmp13.i12.i to float ; <float> [#uses=1]
|
||||
%tmp11.i = load int* null ; <int> [#uses=1]
|
||||
%tmp11.i = cast int %tmp11.i to uint ; <uint> [#uses=1]
|
||||
%tmp11.s = load int* null ; <int> [#uses=1]
|
||||
%tmp11.i = cast int %tmp11.s to uint ; <uint> [#uses=1]
|
||||
%n.i = cast int %tmp24.i to uint ; <uint> [#uses=1]
|
||||
%tmp13.i7 = mul uint %tmp11.i, %n.i ; <uint> [#uses=1]
|
||||
%tmp.i8 = tail call sbyte* %calloc( uint %tmp13.i7, uint 4 ) ; <sbyte*> [#uses=0]
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
implementation ; Functions:
|
||||
|
||||
void %foo(int %N) {
|
||||
void %foo(int %N.in) {
|
||||
entry:
|
||||
%N = cast int %N to uint ; <uint> [#uses=1]
|
||||
%N = cast int %N.in to uint ; <uint> [#uses=1]
|
||||
br label %cond_true
|
||||
|
||||
cond_true: ; preds = %cond_true, %entry
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
%A = internal global [16 x [16 x int]] zeroinitializer, align 32
|
||||
|
||||
void %test(int %row, int %N) {
|
||||
void %test(int %row, int %N.in) {
|
||||
entry:
|
||||
%N = cast int %N to uint
|
||||
%tmp5 = setgt int %N, 0
|
||||
%N = cast int %N.in to uint
|
||||
%tmp5 = setgt int %N.in, 0
|
||||
br bool %tmp5, label %cond_true, label %return
|
||||
|
||||
cond_true:
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
; An integer truncation to bool should be done with an and instruction to make
|
||||
; sure only the LSBit survives. Test that this is the case both for a returned
|
||||
; value and as the operand of a branch.
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep '\(and\)\|\(test.*\$1\)' | wc -l | grep 6
|
||||
bool %test1(int %X) {
|
||||
%Y = trunc int %X to bool
|
||||
; RUN: llvm-as < %s | llc -march=x86 &&
|
||||
; RUN: llvm-as < %s | llc -march=x86 | grep '\(and\)\|\(test.*\$1\)' | \
|
||||
; RUN: wc -l | grep 6
|
||||
|
||||
define bool @zext %test1(i32 %X) {
|
||||
%Y = trunc i32 %X to bool
|
||||
ret bool %Y
|
||||
}
|
||||
|
||||
bool %test2(int %val, int %mask) {
|
||||
define bool %test2(i32 %val, i32 %mask) {
|
||||
entry:
|
||||
%mask = trunc int %mask to ubyte
|
||||
%shifted = ashr int %val, ubyte %mask
|
||||
%anded = and int %shifted, 1
|
||||
%trunced = trunc int %anded to bool
|
||||
%mask = trunc i32 %mask to i8
|
||||
%shifted = ashr i32 %val, i8 %mask
|
||||
%anded = and i32 %shifted, 1
|
||||
%trunced = trunc i32 %anded to bool
|
||||
br bool %trunced, label %ret_true, label %ret_false
|
||||
ret_true:
|
||||
ret bool true
|
||||
|
@ -21,39 +23,40 @@ ret_false:
|
|||
ret bool false
|
||||
}
|
||||
|
||||
int %test3(sbyte* %ptr) {
|
||||
%val = load sbyte* %ptr
|
||||
%tmp = trunc sbyte %val to bool ; %<bool> [#uses=1]
|
||||
define i32 %test3(i8* %ptr) {
|
||||
%val = load i8* %ptr
|
||||
%tmp = trunc i8 %val to bool
|
||||
br bool %tmp, label %cond_true, label %cond_false
|
||||
cond_true:
|
||||
ret int 21
|
||||
ret i32 21
|
||||
cond_false:
|
||||
ret int 42
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
int %test4(sbyte* %ptr) {
|
||||
%tmp = ptrtoint sbyte* %ptr to bool
|
||||
define i32 %test4(i8* %ptr) {
|
||||
%tmp = ptrtoint i8* %ptr to bool
|
||||
br bool %tmp, label %cond_true, label %cond_false
|
||||
cond_true:
|
||||
ret int 21
|
||||
ret i32 21
|
||||
cond_false:
|
||||
ret int 42
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
int %test5(float %f) {
|
||||
define i32 %test5(float %f) {
|
||||
%tmp = fptoui float %f to bool
|
||||
br bool %tmp, label %cond_true, label %cond_false
|
||||
cond_true:
|
||||
ret int 21
|
||||
ret i32 21
|
||||
cond_false:
|
||||
ret int 42
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
int %test6(double %d) {
|
||||
define i32 %test6(double %d) {
|
||||
%tmp = fptosi double %d to bool
|
||||
br bool %tmp, label %cond_true, label %cond_false
|
||||
cond_true:
|
||||
ret int 21
|
||||
ret i32 21
|
||||
cond_false:
|
||||
ret int 42
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -scalarrepl -instcombine | \
|
||||
; RUN: llc -march=x86 -mcpu=yonah &&
|
||||
; RUN: llc -march=x86 -mcpu=yonah &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -scalarrepl -instcombine | \
|
||||
; RUN: llc -march=x86 -mcpu=yonah | not grep sub.*esp
|
||||
; RUN: llc -march=x86 -mcpu=yonah | not grep sub.*esp
|
||||
|
||||
; This checks that various insert/extract idiom work without going to the
|
||||
; stack.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
int %main() {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
target endian = little
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
; Testcase distilled from 256.bzip2.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
; This testcase failed to work because two variable sized allocas confused the
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
; This testcase exposes a bug in the local register allocator where it runs out
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
%.LC0 = internal global [12 x sbyte] c"Hello World\00"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
implementation
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
; RUN: llvm-as -f %s -o %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc
|
||||
; RUN: lli %t.bc > /dev/null
|
||||
|
||||
; test return instructions
|
||||
|
||||
void %test() { ret void }
|
||||
sbyte %test() { ret sbyte 1 }
|
||||
ubyte %test() { ret ubyte 1 }
|
||||
short %test() { ret short -1 }
|
||||
ushort %test() { ret ushort 65535 }
|
||||
void %test1() { ret void }
|
||||
sbyte %test2() { ret sbyte 1 }
|
||||
ubyte %test3() { ret ubyte 1 }
|
||||
short %test4() { ret short -1 }
|
||||
ushort %test5() { ret ushort 65535 }
|
||||
int %main() { ret int 0 }
|
||||
uint %test() { ret uint 4 }
|
||||
long %test() { ret long 0 }
|
||||
ulong %test() { ret ulong 0 }
|
||||
float %test() { ret float 1.0 }
|
||||
double %test() { ret double 2.0 }
|
||||
uint %test6() { ret uint 4 }
|
||||
long %test7() { ret long 0 }
|
||||
ulong %test8() { ret ulong 0 }
|
||||
float %test9() { ret float 1.0 }
|
||||
double %test10() { ret double 2.0 }
|
||||
|
|
|
@ -6,35 +6,35 @@ int %main() {
|
|||
%shamt = add ubyte 0, 1
|
||||
|
||||
; Left shifts...
|
||||
%t1 = shl int 1, ubyte %shamt
|
||||
%t2 = shl int 1, ubyte 4
|
||||
%t1.s = shl int 1, ubyte %shamt
|
||||
%t2.s = shl int 1, ubyte 4
|
||||
|
||||
%t1 = shl uint 1, ubyte %shamt
|
||||
%t2 = shl uint 1, ubyte 5
|
||||
|
||||
;%t1 = shl long 1, ubyte %shamt
|
||||
%t2 = shl long 1, ubyte 4
|
||||
%t2.s = shl long 1, ubyte 4
|
||||
|
||||
;%t1 = shl ulong 1, ubyte %shamt
|
||||
%t2 = shl ulong 1, ubyte 5
|
||||
|
||||
; Right shifts...
|
||||
%tr1 = shr int 1, ubyte %shamt
|
||||
%tr2 = shr int 1, ubyte 4
|
||||
%tr1.s = shr int 1, ubyte %shamt
|
||||
%tr2.s = shr int 1, ubyte 4
|
||||
|
||||
%tr1 = shr uint 1, ubyte %shamt
|
||||
%tr2 = shr uint 1, ubyte 5
|
||||
|
||||
;%tr1 = shr long 1, ubyte %shamt
|
||||
%tr1 = shr long 1, ubyte 4
|
||||
%tr2 = shr long 1, ubyte %shamt
|
||||
%tr3 = shl long 1, ubyte 4
|
||||
%tr4 = shl long 1, ubyte %shamt
|
||||
%tr1.l = shr long 1, ubyte 4
|
||||
%tr2.l = shr long 1, ubyte %shamt
|
||||
%tr3.l = shl long 1, ubyte 4
|
||||
%tr4.l = shl long 1, ubyte %shamt
|
||||
|
||||
;%t1 = shr ulong 1, ubyte %shamt
|
||||
%tr1 = shr ulong 1, ubyte 5
|
||||
%tr2 = shr ulong 1, ubyte %shamt
|
||||
%tr3 = shl ulong 1, ubyte 5
|
||||
%tr4 = shl ulong 1, ubyte %shamt
|
||||
%tr1.u = shr ulong 1, ubyte 5
|
||||
%tr2.u = shr ulong 1, ubyte %shamt
|
||||
%tr3.u = shl ulong 1, ubyte 5
|
||||
%tr4.u = shl ulong 1, ubyte %shamt
|
||||
ret int 0
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as < %s > %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.bc
|
||||
; RUN: echo | llvm-as > %t.tmp.bc
|
||||
; RUN: llvm-link %t.tmp.bc %t.bc
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; This fails linking when it is linked with an empty file as the first object file
|
||||
|
||||
; RUN: llvm-as > %t1.bc < /dev/null
|
||||
; RUN: llvm-as < %s > %t2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t2.bc
|
||||
; RUN: llvm-link %t[12].bc
|
||||
|
||||
%work = global int (int, int)* %zip
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; This fails linking when it is linked with an empty file as the first object file
|
||||
|
||||
; RUN: llvm-as > %t.LinkTest.bc < /dev/null
|
||||
; RUN: llvm-as < %s > %t.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.bc
|
||||
; RUN: llvm-link %t.LinkTest.bc %t.bc
|
||||
|
||||
%work = global int 4
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; This one fails because the LLVM runtime is allowing two null pointers of
|
||||
; the same type to be created!
|
||||
|
||||
; RUN: echo "%T = type int" | llvm-as > %t.2.bc
|
||||
; RUN: echo "%T = type int" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; This one fails because the LLVM runtime is allowing two null pointers of
|
||||
; the same type to be created!
|
||||
|
||||
; RUN: echo "%S = type { %T*} %T = type opaque" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: echo "%S = type { %T*} %T = type opaque" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc
|
||||
|
||||
%S = type { %T* }
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: echo "%T = type opaque" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: echo "%T = type opaque" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc
|
||||
|
||||
%T = type opaque
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: echo "%T = type int" | llvm-as > %t.1.bc
|
||||
; RUN: llvm-as < %s > %t.2.bc
|
||||
; RUN: echo "%T = type int" | llvm-upgrade | llvm-as > %t.1.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.2.bc
|
||||
; RUN: llvm-link %t.[12].bc
|
||||
|
||||
%T = type opaque
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
; RUN: llvm-as < %s > %t.out1.bc
|
||||
; RUN: echo "%S = type { int, int* }" | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
|
||||
; RUN: echo "%S = type { int, int* }" | llvm-upgrade | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-link %t.out[12].bc
|
||||
|
||||
%T = type opaque
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llvm-as < %s > %t.out1.bc
|
||||
; RUN: echo "%S = external global { int, opaque* } declare void %F(opaque*)" | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
|
||||
; RUN: echo "%S = external global { int, opaque* } declare void %F(opaque*)" | llvm-upgrade | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-link %t.out[12].bc | llvm-dis | not grep opaque
|
||||
|
||||
; After linking this testcase, there should be no opaque types left. The two
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; It's a bad idea to go recursively traipsing through types without a safety
|
||||
; net.
|
||||
|
||||
; RUN: llvm-as < %s > %t.out1.bc
|
||||
; RUN: echo "%S = type { %S*, int* }" | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
|
||||
; RUN: echo "%S = type { %S*, int* }" | llvm-upgrade | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-link %t.out[12].bc
|
||||
|
||||
%S = type { %S*, opaque* }
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llvm-as < %s > %t.out1.bc
|
||||
; RUN: echo "%S = type [8 x int] external global %S " | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
|
||||
; RUN: echo "%S = type [8 x int] external global %S " | llvm-upgrade | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-link %t.out[12].bc | llvm-dis | grep %S | grep '{'
|
||||
|
||||
%S = type { int }
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; The linker should merge link-once globals into strong external globals,
|
||||
; just like it does for weak symbols!
|
||||
|
||||
; RUN: echo "%X = global int 7" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: echo "%X = global int 7" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc
|
||||
|
||||
%X = linkonce global int 7
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llvm-as < %s > %t.out2.bc
|
||||
; RUN: echo "%me = global int* null" | llvm-as > %t.out1.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.out2.bc
|
||||
; RUN: echo "%me = global int* null" | llvm-upgrade | llvm-as > %t.out1.bc
|
||||
; RUN: llvm-link %t.out[12].bc -o /dev/null -f
|
||||
|
||||
%me = weak global int * null
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; Test that a prototype can be marked const, and the definition is allowed
|
||||
; to be nonconst.
|
||||
|
||||
; RUN: echo "%X = external constant int" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global int 7'
|
||||
; RUN: echo "%X = external constant int" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global i32 7'
|
||||
|
||||
%X = global int 7
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; Test that a prototype can be marked const, and the definition is allowed
|
||||
; to be nonconst.
|
||||
|
||||
; RUN: echo "%X = global int 7" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global int 7'
|
||||
; RUN: echo "%X = global int 7" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'global i32 7'
|
||||
|
||||
%X = external constant int
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: echo "%G = appending global [0 x int] zeroinitializer" | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-as < %s > %t.out1.bc
|
||||
; RUN: echo "%G = appending global [0 x int] zeroinitializer" | llvm-upgrade | llvm-as > %t.out2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc
|
||||
; RUN: llvm-link %t.out[12].bc | llvm-dis | grep '%G ='
|
||||
|
||||
; When linked, the globals should be merged, and the result should still
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as %s -f -o %s.bc ; llvm-link -f -o %s.linked %s.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as -f -o %s.bc ; llvm-link -f -o %s.linked %s.bc
|
||||
|
||||
target endian = big
|
||||
target pointersize = 32
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; The linker should choose the largest alignment when linking.
|
||||
|
||||
; RUN: echo "%X = global int 7, align 8" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: echo "%X = global int 7, align 8" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 'align 8'
|
||||
|
||||
%X = weak global int 7, align 4
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Test that appending linkage works correctly when arrays are the same size.
|
||||
|
||||
; RUN: echo "%X = appending global [1x int] [int 8]" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: echo "%X = appending global [1x int] [int 8]" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep 7 | grep 8
|
||||
|
||||
%X = appending global [1 x int] [int 7]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Test that appending linkage works correctly when arrays are the same size.
|
||||
|
||||
; RUN: echo "%X = constant [1x int] [int 8]" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade %s | llvm-as > %t.1.bc
|
||||
; RUN: echo "%X = constant [1x int] [int 8]" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep constant
|
||||
|
||||
%X = uninitialized global [1 x int]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Test that appending linkage works correctly when arrays are the same size.
|
||||
|
||||
; RUN: echo "%X = external global [1x int]" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade %s | llvm-as > %t.1.bc
|
||||
; RUN: echo "%X = external global [1x int]" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep constant
|
||||
|
||||
%X = constant [1 x int] [ int 12 ]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; Test that appending linkage works correctly when arrays are the same size.
|
||||
|
||||
; RUN: echo "%X = external constant [1x int]" | llvm-as > %t.2.bc
|
||||
; RUN: echo "%X = external constant [1x int]" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis | grep constant
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; This fails because the linker renames the non-opaque type not the opaque
|
||||
; one...
|
||||
|
||||
; RUN: echo "%X = linkonce global int 8" | llvm-as > %t.2.bc
|
||||
; RUN: llvm-as < %s > %t.1.bc
|
||||
; RUN: echo "%X = linkonce global int 8" | llvm-upgrade | llvm-as > %t.2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc
|
||||
; RUN: llvm-link %t.[12].bc | llvm-dis
|
||||
|
||||
%X = linkonce global int 7
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
; RUN: llvm-as < %s > %t.bc
|
||||
; RUN: llvm-as < `dirname %s`/testlink1.ll > %t2.bc
|
||||
; RUN: llvm-upgrade < %s | llvm-as > %t.bc
|
||||
; RUN: llvm-upgrade < `dirname %s`/testlink1.ll | llvm-as > %t2.bc
|
||||
; RUN: llvm-link %t.bc %t.bc %t2.bc -o %t1.bc -f
|
||||
; RUN: llvm-dis < %t1.bc |grep "kallsyms_names = extern_weak" &&
|
||||
; RUN: llvm-dis < %t1.bc |grep "MyVar = external global int" &&
|
||||
; RUN: llvm-dis < %t1.bc |grep "Inte = global int"
|
||||
; RUN: llvm-dis < %t1.bc | grep "kallsyms_names = extern_weak" &&
|
||||
; RUN: llvm-dis < %t1.bc | grep "MyVar = external global i32" &&
|
||||
; RUN: llvm-dis < %t1.bc | grep "Inte = global i32"
|
||||
|
||||
%kallsyms_names = extern_weak global [0 x ubyte]
|
||||
%MyVar = extern_weak global int
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -argpromotion | llvm-dis | grep 'load int\* %A'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -argpromotion | llvm-dis | grep 'load i32\* %A'
|
||||
|
||||
implementation
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'uint -1' &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'i32 -1' &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | not grep zeroinitializer
|
||||
|
||||
< 4 x uint> %test() {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret int -1' &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret uint 1'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret i32 -1' &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep 'ret i32 1'
|
||||
|
||||
int %test1() {
|
||||
%A = sext bool true to int
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-as < %s | llvm-dis &&
|
||||
; RUN: llvm-as < %s | llvm-dis | grep 0x36A0000000000000
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep 0x36A0000000000000
|
||||
|
||||
%A = global float bitcast (int 1 to float)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep -F 'ret int* null' | wc -l | grep 2
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis | grep -F 'ret i32* null' | wc -l | grep 2
|
||||
int* %test1() {
|
||||
%X = cast float 0.0 to int*
|
||||
ret int* %X
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store int 1234567'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -dse | llvm-dis | grep 'store i32 1234567'
|
||||
|
||||
; Do not delete stores that are only partially killed.
|
||||
|
||||
|
|
|
@ -755,22 +755,22 @@ cond_true226.critedge: ; preds = %cond_false210
|
|||
%tmp.i = load %struct.TType** %DP_TTable ; <%struct.TType*> [#uses=1]
|
||||
%tmp.i7.b = load bool* %TTSize.b ; <bool> [#uses=1]
|
||||
%tmp1.i = select bool %tmp.i7.b, uint 60000000, uint 0 ; <uint> [#uses=1]
|
||||
%tmp.i = getelementptr %struct.TType* %tmp.i, int 0, uint 0 ; <sbyte*> [#uses=1]
|
||||
call void %llvm.memset.i32( sbyte* %tmp.i, ubyte 0, uint %tmp1.i, uint 4 )
|
||||
%tmp.i.sb = getelementptr %struct.TType* %tmp.i, int 0, uint 0 ; <sbyte*> [#uses=1]
|
||||
call void %llvm.memset.i32( sbyte* %tmp.i.sb, ubyte 0, uint %tmp1.i, uint 4 )
|
||||
%tmp2.i = load %struct.TType** %AS_TTable ; <%struct.TType*> [#uses=1]
|
||||
%tmp3.i8.b = load bool* %TTSize.b ; <bool> [#uses=1]
|
||||
%tmp4.i = select bool %tmp3.i8.b, uint 60000000, uint 0 ; <uint> [#uses=1]
|
||||
%tmp2.i = getelementptr %struct.TType* %tmp2.i, int 0, uint 0 ; <sbyte*> [#uses=1]
|
||||
call void %llvm.memset.i32( sbyte* %tmp2.i, ubyte 0, uint %tmp4.i, uint 4 )
|
||||
%tmp.i = load %struct.QTType** %QS_TTable ; <%struct.QTType*> [#uses=1]
|
||||
%tmp.i.QTT = load %struct.QTType** %QS_TTable ; <%struct.QTType*> [#uses=1]
|
||||
%tmp5.i9.b = load bool* %TTSize.b ; <bool> [#uses=1]
|
||||
%tmp6.i10 = select bool %tmp5.i9.b, uint 48000000, uint 0 ; <uint> [#uses=1]
|
||||
%tmp7.i = getelementptr %struct.QTType* %tmp.i, int 0, uint 0 ; <sbyte*> [#uses=1]
|
||||
%tmp7.i = getelementptr %struct.QTType* %tmp.i.QTT, int 0, uint 0 ; <sbyte*> [#uses=1]
|
||||
call void %llvm.memset.i32( sbyte* %tmp7.i, ubyte 0, uint %tmp6.i10, uint 4 )
|
||||
%tmp.i = load %struct.ECacheType** %ECache ; <%struct.ECacheType*> [#uses=1]
|
||||
%tmp.i.ECache = load %struct.ECacheType** %ECache ; <%struct.ECacheType*> [#uses=1]
|
||||
%tmp.i14.b = load bool* %ECacheSize.b ; <bool> [#uses=1]
|
||||
%tmp1.i16 = select bool %tmp.i14.b, uint 12000000, uint 0 ; <uint> [#uses=1]
|
||||
%tmp.i17 = cast %struct.ECacheType* %tmp.i to sbyte* ; <sbyte*> [#uses=1]
|
||||
%tmp.i17 = cast %struct.ECacheType* %tmp.i.ECache to sbyte* ; <sbyte*> [#uses=1]
|
||||
call void %llvm.memset.i32( sbyte* %tmp.i17, ubyte 0, uint %tmp1.i16, uint 4 )
|
||||
call void %llvm.memset.i32( sbyte* cast ([300 x int]* %rootlosers to sbyte*), ubyte 0, uint 1200, uint 4 )
|
||||
%tmp234.b = load bool* %is_pondering.b ; <bool> [#uses=1]
|
||||
|
@ -800,12 +800,12 @@ bb260: ; preds = %bb249
|
|||
%tmp1.b.i = load bool* %PBSize.b ; <bool> [#uses=1]
|
||||
%tmp1.i1 = select bool %tmp1.b.i, uint 200000, uint 0 ; <uint> [#uses=1]
|
||||
%tmp.i2 = call sbyte* %calloc( uint %tmp1.i1, uint 44 ) ; <sbyte*> [#uses=1]
|
||||
%tmp.i = cast sbyte* %tmp.i2 to ubyte* ; <ubyte*> [#uses=1]
|
||||
store ubyte* %tmp.i, ubyte** %membuff
|
||||
%tmp.i.ub = cast sbyte* %tmp.i2 to ubyte* ; <ubyte*> [#uses=1]
|
||||
store ubyte* %tmp.i.ub, ubyte** %membuff
|
||||
%tmp2.i3 = call sbyte* %calloc( uint 1, uint 44 ) ; <sbyte*> [#uses=3]
|
||||
%tmp2.i = cast sbyte* %tmp2.i3 to %struct.node_t* ; <%struct.node_t*> [#uses=6]
|
||||
%tmp.i = getelementptr [512 x %struct.move_s]* null, int 0, int 0 ; <%struct.move_s*> [#uses=3]
|
||||
call fastcc void %gen( %struct.move_s* %tmp.i )
|
||||
%tmp.i.move_s = getelementptr [512 x %struct.move_s]* null, int 0, int 0 ; <%struct.move_s*> [#uses=3]
|
||||
call fastcc void %gen( %struct.move_s* %tmp.i.move_s )
|
||||
%tmp3.i4 = load int* %numb_moves ; <int> [#uses=4]
|
||||
%tmp3.i5 = cast int %tmp3.i4 to uint ; <uint> [#uses=0]
|
||||
store bool false, bool* %alllosers.b
|
||||
|
@ -850,8 +850,8 @@ in_check.exit.i: ; preds = %bb260
|
|||
cond_true43.i: ; preds = %cond_false12.i.i, %cond_true4.i.i
|
||||
%tmp21.0.ph.i = phi int [ %tmp217.i, %cond_true4.i.i ], [ %tmp2120.i, %cond_false12.i.i ] ; <int> [#uses=1]
|
||||
%i.0.0.i = cast uint 0 to int ; <int> [#uses=2]
|
||||
call fastcc void %make( %struct.move_s* %tmp.i, int %i.0.0.i )
|
||||
%tmp27.i = call fastcc uint %check_legal( %struct.move_s* %tmp.i, int %i.0.0.i, int %tmp21.0.ph.i ) ; <uint> [#uses=1]
|
||||
call fastcc void %make( %struct.move_s* %tmp.i.move_s, int %i.0.0.i )
|
||||
%tmp27.i = call fastcc uint %check_legal( %struct.move_s* %tmp.i.move_s, int %i.0.0.i, int %tmp21.0.ph.i ) ; <uint> [#uses=1]
|
||||
%tmp.i6 = seteq uint %tmp27.i, 0 ; <bool> [#uses=0]
|
||||
ret void
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret int 152'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret i32 152'
|
||||
|
||||
int %main() {
|
||||
entry:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret int 27'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars | llvm-dis | grep 'ret i32 27'
|
||||
|
||||
; Make sure to compute the right exit value based on negative strides.
|
||||
; PR726
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars -instcombine | llvm-dis | grep 'store int 0'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -indvars -instcombine | llvm-dis | grep 'store i32 0'
|
||||
; Test that -indvars can reduce variable stride IVs. If it can reduce variable
|
||||
; stride iv's, it will make %iv. and %m.0.0 isomorphic to each other without
|
||||
; cycles, allowing the tmp.21 subtraction to be eliminated.
|
||||
|
@ -19,7 +19,7 @@ no_exit.preheader: ; preds = %entry
|
|||
br label %no_exit
|
||||
|
||||
no_exit: ; preds = %no_exit, %no_exit.preheader
|
||||
%iv. = phi uint [ 0, %no_exit.preheader ], [ %iv..inc, %no_exit ] ; <uint> [#uses=1]
|
||||
%iv.ui = phi uint [ 0, %no_exit.preheader ], [ %iv..inc.ui, %no_exit ] ; <uint> [#uses=1]
|
||||
%iv. = phi int [ %tmp.5, %no_exit.preheader ], [ %iv..inc, %no_exit ] ; <int> [#uses=2]
|
||||
%m.0.0 = phi int [ %tmp.5, %no_exit.preheader ], [ %tmp.24, %no_exit ] ; <int> [#uses=2]
|
||||
store int 2, int* %tmp.16
|
||||
|
@ -27,8 +27,8 @@ no_exit: ; preds = %no_exit, %no_exit.preheader
|
|||
store int %tmp.21, int* %data
|
||||
%tmp.24 = add int %m.0.0, %tmp.9 ; <int> [#uses=1]
|
||||
%iv..inc = add int %tmp.9, %iv. ; <int> [#uses=1]
|
||||
%iv..inc = add uint %iv., 1 ; <uint> [#uses=2]
|
||||
%iv..inc1 = cast uint %iv..inc to int ; <int> [#uses=1]
|
||||
%iv..inc.ui = add uint %iv.ui, 1 ; <uint> [#uses=2]
|
||||
%iv..inc1 = cast uint %iv..inc.ui to int ; <int> [#uses=1]
|
||||
%tmp.12 = setlt int %iv..inc1, %tmp.2 ; <bool> [#uses=1]
|
||||
br bool %tmp.12, label %no_exit, label %return.loopexit
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | grep 'ret int 1'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -inline | llvm-dis | grep 'ret i32 1'
|
||||
; ModuleID = 'short.opt.bc'
|
||||
|
||||
implementation ; Functions:
|
||||
|
|
|
@ -10,7 +10,7 @@ implementation ; Functions:
|
|||
|
||||
int %mem_mono_copy_mono(%struct.gx_device* %dev, ubyte* %base, int %sourcex, int %raster, int %x, int %y, int %w, int %h, uint %zero, uint %one) {
|
||||
entry:
|
||||
%raster = cast int %raster to uint ; <uint> [#uses=3]
|
||||
%raster.ui = cast int %raster to uint ; <uint> [#uses=3]
|
||||
%tmp = seteq uint %one, %zero ; <bool> [#uses=1]
|
||||
br bool %tmp, label %cond_true, label %cond_next
|
||||
|
||||
|
@ -146,7 +146,6 @@ cond_true249: ; preds = %cond_true249, %cond_true249.preheader
|
|||
%optr.3.2 = phi ubyte* [ %tmp232, %cond_true249 ], [ %dest.1.0, %cond_true249.preheader ] ; <ubyte*> [#uses=1]
|
||||
%bptr.3.2 = phi ubyte* [ %tmp226, %cond_true249 ], [ %line.1.0, %cond_true249.preheader ] ; <ubyte*> [#uses=1]
|
||||
%tmp. = add int %tmp109, %w ; <int> [#uses=1]
|
||||
%indvar = cast uint %indvar to int ; <int> [#uses=1]
|
||||
%tmp.58 = mul int %indvar, -8 ; <int> [#uses=1]
|
||||
%tmp.57 = add int %tmp., -16 ; <int> [#uses=1]
|
||||
%tmp246.2 = add int %tmp.58, %tmp.57 ; <int> [#uses=1]
|
||||
|
@ -236,10 +235,8 @@ cond_true295.us: ; preds = %cond_next280.us, %cond_true295.preheader.split.us
|
|||
%dest.1.0.us = phi ubyte* [ %tmp286.us, %cond_next280.us ], [ %tmp100, %cond_true295.preheader.split.us ] ; <ubyte*> [#uses=3]
|
||||
%dest_line.1.0.us = phi ubyte** [ %tmp282.us, %cond_next280.us ], [ %tmp96, %cond_true295.preheader.split.us ] ; <ubyte**> [#uses=1]
|
||||
%tmp.89 = sub uint 0, %indvar86 ; <uint> [#uses=1]
|
||||
%tmp.89 = cast uint %tmp.89 to int ; <int> [#uses=1]
|
||||
%tmp292.0.us = add int %tmp.89, %tmp29222 ; <int> [#uses=1]
|
||||
%tmp.91 = mul uint %indvar86, %raster ; <uint> [#uses=1]
|
||||
%tmp.91 = cast uint %tmp.91 to int ; <int> [#uses=1]
|
||||
%tmp.91 = mul uint %indvar86, %raster.ui ; <uint> [#uses=1]
|
||||
%tmp104.sum101 = add int %tmp102, %tmp.91 ; <int> [#uses=1]
|
||||
%line.1.0.us = getelementptr ubyte* %base, int %tmp104.sum101 ; <ubyte*> [#uses=2]
|
||||
%tmp.us = load ubyte* %line.1.0.us ; <ubyte> [#uses=1]
|
||||
|
@ -313,10 +310,8 @@ cond_true295: ; preds = %cond_true295.preheader.split, %cond_next280
|
|||
%dest.1.0 = phi ubyte* [ %tmp286, %cond_next280 ], [ %tmp100, %cond_true295.preheader.split ] ; <ubyte*> [#uses=4]
|
||||
%dest_line.1.0 = phi ubyte** [ %tmp282, %cond_next280 ], [ %tmp96, %cond_true295.preheader.split ] ; <ubyte**> [#uses=1]
|
||||
%tmp.63 = sub uint 0, %indvar60 ; <uint> [#uses=1]
|
||||
%tmp.63 = cast uint %tmp.63 to int ; <int> [#uses=1]
|
||||
%tmp292.0 = add int %tmp.63, %tmp29222 ; <int> [#uses=1]
|
||||
%tmp.65 = mul uint %indvar60, %raster ; <uint> [#uses=1]
|
||||
%tmp.65 = cast uint %tmp.65 to int ; <int> [#uses=1]
|
||||
%tmp.65 = mul uint %indvar60, %raster.ui ; <uint> [#uses=1]
|
||||
%tmp104.sum97 = add int %tmp102, %tmp.65 ; <int> [#uses=1]
|
||||
%line.1.0 = getelementptr ubyte* %base, int %tmp104.sum97 ; <ubyte*> [#uses=3]
|
||||
%tmp = load ubyte* %line.1.0 ; <ubyte> [#uses=1]
|
||||
|
@ -386,7 +381,6 @@ cond_true398: ; preds = %cond_true398, %cond_true398.preheader
|
|||
%optr309.3.0 = phi ubyte* [ %optr309.3, %cond_true398 ], [ %optr309.353, %cond_true398.preheader ] ; <ubyte*> [#uses=2]
|
||||
%optr309.3.in.0 = add uint %indvar66, %optr309.3.in51 ; <uint> [#uses=1]
|
||||
%tmp.70 = add int %tmp109, %w ; <int> [#uses=1]
|
||||
%indvar66 = cast uint %indvar66 to int ; <int> [#uses=1]
|
||||
%tmp.72 = mul int %indvar66, -8 ; <int> [#uses=1]
|
||||
%tmp.71 = add int %tmp.70, -8 ; <int> [#uses=1]
|
||||
%count308.3.0 = add int %tmp.72, %tmp.71 ; <int> [#uses=1]
|
||||
|
@ -440,7 +434,6 @@ cond_true414: ; preds = %cond_true404
|
|||
%tmp416 = load ubyte* %tmp410 ; <ubyte> [#uses=1]
|
||||
%tmp416 = cast ubyte %tmp416 to uint ; <uint> [#uses=1]
|
||||
%tmp418 = shr uint %tmp416, ubyte %tmp319 ; <uint> [#uses=1]
|
||||
%tmp418 = cast uint %tmp418 to int ; <int> [#uses=1]
|
||||
%tmp420 = add int %tmp418, %tmp408 ; <int> [#uses=1]
|
||||
br label %cond_next422
|
||||
|
||||
|
@ -479,7 +472,6 @@ cond_true457.preheader: ; preds = %cond_false299
|
|||
%tmp354 = and uint %iftmp.37.0, %mask.1.1 ; <uint> [#uses=1]
|
||||
%tmp361 = sub int %w, %tmp110 ; <int> [#uses=2]
|
||||
%tmp39755 = setgt int %tmp361, 7 ; <bool> [#uses=1]
|
||||
%iftmp.35.0 = cast uint %iftmp.35.0 to int ; <int> [#uses=1]
|
||||
%tmp426 = cast uint %rmask.0.1 to ubyte ; <ubyte> [#uses=1]
|
||||
%tmp426not = xor ubyte %tmp426, 255 ; <ubyte> [#uses=1]
|
||||
%tmp428 = or ubyte %tmp347, %tmp426not ; <ubyte> [#uses=1]
|
||||
|
@ -492,10 +484,8 @@ cond_true457: ; preds = %cond_true457.preheader, %cond_next442
|
|||
%dest.3.0 = phi ubyte* [ %tmp448, %cond_next442 ], [ %tmp100, %cond_true457.preheader ] ; <ubyte*> [#uses=3]
|
||||
%dest_line.3.0 = phi ubyte** [ %tmp444, %cond_next442 ], [ %tmp96, %cond_true457.preheader ] ; <ubyte**> [#uses=1]
|
||||
%tmp.77 = sub uint 0, %indvar74 ; <uint> [#uses=1]
|
||||
%tmp.77 = cast uint %tmp.77 to int ; <int> [#uses=1]
|
||||
%tmp454.0 = add int %tmp.77, %tmp45438 ; <int> [#uses=1]
|
||||
%tmp.79 = mul uint %indvar74, %raster ; <uint> [#uses=1]
|
||||
%tmp.79 = cast uint %tmp.79 to int ; <int> [#uses=1]
|
||||
%tmp.79 = mul uint %indvar74, %raster.ui ; <uint> [#uses=1]
|
||||
%tmp104.sum = add int %tmp102, %tmp.79 ; <int> [#uses=1]
|
||||
%line.3.0 = getelementptr ubyte* %base, int %tmp104.sum ; <ubyte*> [#uses=3]
|
||||
%tmp318 = load ubyte* %line.3.0 ; <ubyte> [#uses=2]
|
||||
|
|
|
@ -9,8 +9,8 @@ void %test() {
|
|||
entry:
|
||||
%tmp = getelementptr { long, long, long, long }* null, int 0, uint 3
|
||||
%tmp = load long* %tmp ; <long> [#uses=1]
|
||||
%tmp8 = load ulong* null ; <ulong> [#uses=1]
|
||||
%tmp8 = cast ulong %tmp8 to long ; <long> [#uses=1]
|
||||
%tmp8.ui = load ulong* null ; <ulong> [#uses=1]
|
||||
%tmp8 = cast ulong %tmp8.ui to long ; <long> [#uses=1]
|
||||
%tmp9 = and long %tmp8, %tmp ; <long> [#uses=1]
|
||||
%sext = cast long %tmp9 to int ; <int> [#uses=1]
|
||||
%tmp27.i = cast int %sext to long ; <long> [#uses=1]
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
; PR913
|
||||
|
||||
int %test(int* %tmp1) {
|
||||
%tmp = load int* %tmp1 ; <int> [#uses=1]
|
||||
%tmp = cast int %tmp to uint ; <uint> [#uses=1]
|
||||
%tmp2 = shr uint %tmp, ubyte 5 ; <uint> [#uses=1]
|
||||
%tmp2 = cast uint %tmp2 to int ; <int> [#uses=1]
|
||||
%tmp.i = load int* %tmp1 ; <int> [#uses=1]
|
||||
%tmp = cast int %tmp.i to uint ; <uint> [#uses=1]
|
||||
%tmp2.ui = shr uint %tmp, ubyte 5 ; <uint> [#uses=1]
|
||||
%tmp2 = cast uint %tmp2.ui to int ; <int> [#uses=1]
|
||||
%tmp3 = and int %tmp2, 1 ; <int> [#uses=1]
|
||||
%tmp3 = cast int %tmp3 to bool ; <bool> [#uses=1]
|
||||
%tmp34 = cast bool %tmp3 to int ; <int> [#uses=1]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; The optimizer should be able to remove cast operation here.
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | not grep 'sext.*int'
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | not grep 'sext.*i32'
|
||||
|
||||
bool %eq_signed_to_small_unsigned(sbyte %SB) {
|
||||
%Y = cast sbyte %SB to uint ; <uint> [#uses=1]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; This test case is reduced from llvmAsmParser.cpp
|
||||
; The optimizer should not remove the cast here.
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | grep 'sext.*int'
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | grep 'sext.*i32'
|
||||
|
||||
bool %test(short %X) {
|
||||
%A = cast short %X to uint
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'ret int %A'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'ret i32 %A'
|
||||
|
||||
int %test(int %A) {
|
||||
%X = or bool false, false
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
; Test some floating point casting cases
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | notcast
|
||||
; RUN: llvm-upgrade %s -o - | llvm-as | opt -instcombine | llvm-dis | \
|
||||
; RUN: grep 'ret [us]byte \(-1\)\|\(255\)'
|
||||
; RUN: grep 'ret i8 \(-1\)\|\(255\)'
|
||||
|
||||
sbyte %test() {
|
||||
sbyte %test1() {
|
||||
%x = fptoui float 255.0 to sbyte
|
||||
ret sbyte %x
|
||||
}
|
||||
|
||||
ubyte %test() {
|
||||
ubyte %test2() {
|
||||
%x = fptosi float -1.0 to ubyte
|
||||
ret ubyte %x
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -disable-output &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'lshr int' | wc -l | grep 2 &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'lshr i32' | wc -l | grep 2 &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep ashr
|
||||
|
||||
int %test1(int %X, ubyte %A) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; This test makes sure that these instructions are properly eliminated.
|
||||
;
|
||||
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep -v 'sub int %Cok, %Bok' | not grep sub
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep -v 'sub i32 %Cok, %Bok' | not grep sub
|
||||
|
||||
implementation
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'and int %Y, 8'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | grep 'and i32 %Y, 8'
|
||||
|
||||
int %test1(ubyte %X) {
|
||||
%Y = cast ubyte %X to int
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "X3.lcssa = phi int" &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%X4 = add int 3, %X3.lcssa"
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "X3.lcssa = phi i32" &&
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -lcssa | llvm-dis | grep "%X4 = add i32 3, %X3.lcssa"
|
||||
|
||||
void %lcssa(bool %S2) {
|
||||
entry:
|
||||
|
@ -23,4 +23,4 @@ post.if:
|
|||
loop.exit:
|
||||
%X4 = add int 3, %X3
|
||||
ret void
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -licm | llvm-dis
|
||||
|
||||
void "testfunc"(int %i) {
|
||||
void "testfunc"(int %i.s) {
|
||||
|
||||
br label %Loop
|
||||
|
||||
Loop:
|
||||
%j = phi uint [0, %0], [%Next, %Loop]
|
||||
%i = cast int %i to uint
|
||||
%i = cast int %i.s to uint
|
||||
%i2 = mul uint %i, 17
|
||||
%Next = add uint %j, %i2
|
||||
%cond = seteq uint %Next, 0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Test that LICM works when there is not a loop-preheader
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -licm | llvm-dis
|
||||
|
||||
void "testfunc"(int %i, bool %ifcond) {
|
||||
void "testfunc"(int %i.s, bool %ifcond) {
|
||||
br bool %ifcond, label %Then, label %Else
|
||||
Then:
|
||||
br label %Loop
|
||||
|
@ -10,7 +10,7 @@ Else:
|
|||
|
||||
Loop:
|
||||
%j = phi uint [0, %Then], [12, %Else], [%Next, %Loop]
|
||||
%i = cast int %i to uint
|
||||
%i = cast int %i.s to uint
|
||||
%i2 = mul uint %i, 17
|
||||
%Next = add uint %j, %i2
|
||||
%cond = seteq uint %Next, 0
|
||||
|
|
Binary file not shown.
|
@ -25,8 +25,8 @@ no_exit.1.outer: ; preds = %cond_true, %no_exit.1.preheader
|
|||
br label %no_exit.1
|
||||
|
||||
no_exit.1: ; preds = %cond_continue, %no_exit.1.outer
|
||||
%indvar = phi uint [ 0, %no_exit.1.outer ], [ %indvar.next, %cond_continue ] ; <uint> [#uses=2]
|
||||
%indvar = cast uint %indvar to int ; <int> [#uses=1]
|
||||
%indvar.ui = phi uint [ 0, %no_exit.1.outer ], [ %indvar.next, %cond_continue ] ; <uint> [#uses=2]
|
||||
%indvar = cast uint %indvar.ui to int ; <int> [#uses=1]
|
||||
%j.1.2 = add int %indvar, %j.1.2.ph ; <int> [#uses=2]
|
||||
%tmp.11 = add int %j.1.2, %tmp.9 ; <int> [#uses=1]
|
||||
%tmp.12 = cast int %tmp.11 to ubyte ; <ubyte> [#uses=1]
|
||||
|
@ -43,7 +43,7 @@ cond_true: ; preds = %no_exit.1
|
|||
|
||||
cond_continue: ; preds = %no_exit.1
|
||||
%tmp.519 = setlt int %inc.1, %C ; <bool> [#uses=1]
|
||||
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
|
||||
%indvar.next = add uint %indvar.ui, 1 ; <uint> [#uses=1]
|
||||
br bool %tmp.519, label %no_exit.1, label %loopexit.1
|
||||
|
||||
loopexit.1: ; preds = %cond_continue, %cond_true, %loopentry.1
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | grep mul | wc -l | grep 1
|
||||
; LSR should not make two copies of the Q*L expression in the preheader!
|
||||
|
||||
sbyte %test(sbyte* %A, sbyte* %B, int %L, int %Q, int %N) {
|
||||
sbyte %test(sbyte* %A, sbyte* %B, int %L, int %Q, int %N.s) {
|
||||
entry:
|
||||
%tmp.6 = mul int %Q, %L ; <int> [#uses=1]
|
||||
%N = cast int %N to uint ; <uint> [#uses=1]
|
||||
%N = cast int %N.s to uint ; <uint> [#uses=1]
|
||||
br label %no_exit
|
||||
|
||||
no_exit: ; preds = %no_exit, %no_exit.preheader
|
||||
%indvar = phi uint [ 0, %entry], [ %indvar.next, %no_exit ] ; <uint> [#uses=2]
|
||||
%indvar.ui = phi uint [ 0, %entry], [ %indvar.next, %no_exit ] ; <uint> [#uses=2]
|
||||
%Sum.0.0 = phi sbyte [ 0, %entry], [ %tmp.21, %no_exit ] ; <sbyte> [#uses=1]
|
||||
%indvar = cast uint %indvar to int ; <int> [#uses=1]
|
||||
%N_addr.0.0 = sub int %N, %indvar ; <int> [#uses=1]
|
||||
%indvar = cast uint %indvar.ui to int ; <int> [#uses=1]
|
||||
%N_addr.0.0 = sub int %N.s, %indvar ; <int> [#uses=1]
|
||||
%tmp.8 = add int %N_addr.0.0, %tmp.6 ; <int> [#uses=2]
|
||||
%tmp.9 = getelementptr sbyte* %A, int %tmp.8 ; <sbyte*> [#uses=1]
|
||||
%tmp.10 = load sbyte* %tmp.9 ; <sbyte> [#uses=1]
|
||||
|
@ -19,7 +19,7 @@ no_exit: ; preds = %no_exit, %no_exit.preheader
|
|||
%tmp.18 = load sbyte* %tmp.17 ; <sbyte> [#uses=1]
|
||||
%tmp.19 = sub sbyte %tmp.10, %tmp.18 ; <sbyte> [#uses=1]
|
||||
%tmp.21 = add sbyte %tmp.19, %Sum.0.0 ; <sbyte> [#uses=2]
|
||||
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=2]
|
||||
%indvar.next = add uint %indvar.ui, 1 ; <uint> [#uses=2]
|
||||
%exitcond = seteq uint %indvar.next, %N ; <bool> [#uses=1]
|
||||
br bool %exitcond, label %loopexit, label %no_exit
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | grep 'add uint %iv.*inc, 1'
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -loop-reduce | llvm-dis | grep 'add i32 %iv.*inc, 1'
|
||||
;
|
||||
; Make sure that the use of the IV outside of the loop (the store) uses the
|
||||
; post incremented value of the IV, not the preincremented value. This
|
||||
|
@ -13,13 +13,13 @@ then.0:
|
|||
br label %no_exit.2
|
||||
|
||||
no_exit.2: ; preds = %no_exit.2, %then.0
|
||||
%indvar630 = phi uint [ 0, %then.0 ], [ %indvar.next631, %no_exit.2 ] ; <uint> [#uses=3]
|
||||
%indvar630 = cast uint %indvar630 to int ; <int> [#uses=1]
|
||||
%tmp.38 = getelementptr [700 x int]* %nbeaux_.0__558, int 0, uint %indvar630 ; <int*> [#uses=1]
|
||||
%indvar630.ui = phi uint [ 0, %then.0 ], [ %indvar.next631, %no_exit.2 ] ; <uint> [#uses=3]
|
||||
%indvar630 = cast uint %indvar630.ui to int ; <int> [#uses=1]
|
||||
%tmp.38 = getelementptr [700 x int]* %nbeaux_.0__558, int 0, uint %indvar630.ui ; <int*> [#uses=1]
|
||||
store int 0, int* %tmp.38
|
||||
%inc.2 = add int %indvar630, 2 ; <int> [#uses=2]
|
||||
%tmp.34 = call bool %pred(int %indvar630)
|
||||
%indvar.next631 = add uint %indvar630, 1 ; <uint> [#uses=1]
|
||||
%indvar.next631 = add uint %indvar630.ui, 1 ; <uint> [#uses=1]
|
||||
br bool %tmp.34, label %no_exit.2, label %loopexit.2.loopexit
|
||||
|
||||
loopexit.2.loopexit: ; preds = %no_exit.2
|
||||
|
|
|
@ -17,10 +17,10 @@ target triple = "i686-apple-darwin8"
|
|||
|
||||
implementation ; Functions:
|
||||
|
||||
void %foo(int %k, int %i) {
|
||||
void %foo(int %k, int %i.s) {
|
||||
entry:
|
||||
%i = cast int %i to uint ; <uint> [#uses=2]
|
||||
%k_addr.012 = shl int %i, ubyte 1 ; <int> [#uses=1]
|
||||
%i = cast int %i.s to uint ; <uint> [#uses=2]
|
||||
%k_addr.012 = shl int %i.s, ubyte 1 ; <int> [#uses=1]
|
||||
%tmp14 = setgt int %k_addr.012, 8192 ; <bool> [#uses=1]
|
||||
br bool %tmp14, label %return, label %bb.preheader
|
||||
|
||||
|
@ -35,7 +35,7 @@ bb: ; preds = %bb, %bb.preheader
|
|||
%k_addr.0.0 = cast uint %tmp.16 to int ; <int> [#uses=1]
|
||||
%tmp = getelementptr [8193 x sbyte]* %flags2, int 0, uint %tmp.16 ; <sbyte*> [#uses=1]
|
||||
store sbyte 0, sbyte* %tmp
|
||||
%k_addr.0 = add int %k_addr.0.0, %i ; <int> [#uses=1]
|
||||
%k_addr.0 = add int %k_addr.0.0, %i.s ; <int> [#uses=1]
|
||||
%tmp = setgt int %k_addr.0, 8192 ; <bool> [#uses=1]
|
||||
%indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
|
||||
br bool %tmp, label %return.loopexit, label %bb
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue