Remove llvm-upgrade

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47119 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Tanya Lattner 2008-02-14 07:57:12 +00:00
parent e8b7ccf0c9
commit 6e9bceea97
47 changed files with 267 additions and 346 deletions

View File

@ -1,13 +1,11 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; This testcase failed due to a bad assertion in SymbolTable.cpp, removed in
; the 1.20 revision. Basically the symbol table assumed that if there was an
; abstract type in the symbol table, [in this case for the entry %foo of type
; void(opaque)* ], that there should have also been named types by now. This
; This testcase failed due to a bad assertion in SymbolTable.cpp, removed in
; the 1.20 revision. Basically the symbol table assumed that if there was an
; abstract type in the symbol table, [in this case for the entry %foo of type
; void(opaque)* ], that there should have also been named types by now. This
; was obviously not the case here, and this is valid. Assertion disabled.
%bb = type i32
declare void "foo"(%bb)
%bb = type int
implementation
declare void @foo(i32)

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; This testcase used to fail due to a lack of this diff in Value.cpp:
; diff -r1.16 Value.cpp
@ -13,16 +13,11 @@
; > if (OldTy == NewTy && !OldTy->isAbstract())
; > Ty.removeUserFromConcrete();
;
; This was causing an assertion failure, due to the "foo" Method object never
; This was causing an assertion failure, due to the "foo" Method object never
; releasing it's reference to the opaque %bb value.
;
declare void "foo"(%bb)
%exception_descriptor = type opaque
%bb = type int
%exception_descriptor = type int
implementation
%bb = type i32
%exception_descriptor = type i32
declare void @foo(i32)

View File

@ -1,10 +1,3 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
%Hosp = type { int, int, int, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6,
int, int } * } *, \2 * }, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6, int,
int } * } *, \2 * }, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6, int, int
} * } *, \2 * }, { \2 *, { int, int, int, { [4 x \3], \2, \5, \6, int, int } * }
*, \2 * } }
implementation
; RUN: llvm-as < %s -o /dev/null -f
%Hosp = type { i32, i32, i32, { \2*, { i32, i32, i32, { [4 x \3], \2, \5, %Hosp, i32, i32 }* }*, \2* }, { \2*, { i32, i32, i32, { [4 x \3], \2, \5, %Hosp, i32, i32 }* }*, \2* }, { \2*, { i32, i32, i32, { [4 x \3], \2, \5, %Hosp, i32, i32 }* }*, \2* }, { \2*, { i32, i32, i32, { [4 x \3], \2, \5, %Hosp, i32, i32 }* }*, \2* } }

View File

@ -1,8 +1,8 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; Method arguments were being checked for collisions at the global scope before
; the method object was created by the parser. Because of this, false
; collisions could occur that would cause the following error message to be
; the method object was created by the parser. Because of this, false
; collisions could occur that would cause the following error message to be
; produced:
;
; Redefinition of value named 'X' in the 'int *' type plane!
@ -10,10 +10,6 @@
; Fixed by delaying binding of variable names until _after_ the method symtab is
; created.
;
@X = global i32 4 ; <i32*> [#uses=0]
%X = global int 4
declare int "xxx"(int * %X)
implementation
declare i32 @xxx(i32*)

View File

@ -1,18 +1,12 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; Another name collision problem. Here the problem was that if a forward
; Another name collision problem. Here the problem was that if a forward
; declaration for a method was found, that this would cause spurious conflicts
; to be detected between locals and globals.
;
%Var = uninitialized global int
@Var = external global i32 ; <i32*> [#uses=0]
declare void "foo"()
implementation
void "foo"()
begin
%Var = alloca int ; Conflict with global var
define void @foo() {
%Var = alloca i32 ; <i32*> [#uses=0]
ret void
end
}

View File

@ -1,7 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
type { { \2 *, \4 ** },
{ \2 *, \4 ** }
}
implementation

View File

@ -1,7 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
%t = type { { \2*, \2 },
{ \2*, \2 }
}
implementation

View File

@ -1,8 +1,3 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
%Hosp = type {
{ \2 *, { \2, \4 } * },
{ \2 *, { \2, \4 } * }
}
implementation
; RUN: llvm-as < %s -o /dev/null -f
%Hosp = type { { \2*, { \2, %Hosp }* }, { \2*, { \2, %Hosp }* } }

View File

@ -5,15 +5,12 @@
; of the bug that was causing the Olden Health benchmark to output incorrect
; results!
;
; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis > %t.1
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as | opt -constprop | \
; RUN: llvm-dis > %t.2
; RUN: llvm-as < %s | opt -constprop | llvm-dis > %t.1
; RUN: llvm-as < %s | llvm-dis | llvm-as | opt -constprop | \
; RUN: llvm-dis > %t.2
; RUN: diff %t.1 %t.2
implementation
double "test"()
begin
%tmp = mul double 72.0e100, 0x427f4000
ret double %tmp
end
define double @test() {
%tmp = mul double 7.200000e+101, 0x427F4000 ; <double> [#uses=1]
ret double %tmp
}

View File

@ -1,11 +1,9 @@
; The output formater prints out 1.0e100 as Inf!
;
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as | llvm-dis
; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis
implementation
define float @test() {
%tmp = mul float 0x7FF0000000000000, 1.000000e+01 ; <float> [#uses=1]
ret float %tmp
}
float "test"()
begin
%tmp = mul float 0x7FF0000000000000, 1.0e1
ret float %tmp
end

View File

@ -4,17 +4,15 @@
; Check by running globaldce, which will remove the constant if there are
; no references to it!
;
; RUN: llvm-upgrade < %s | llvm-as | opt -globaldce | llvm-dis | \
; RUN: llvm-as < %s | opt -globaldce | llvm-dis | \
; RUN: not grep constant
;
%v1 = internal constant int 5
implementation
@v1 = internal constant i32 5
int "createtask"() begin
%v1 = alloca int ;; Alloca should have one use!
%reg112 = load int* %v1 ;; This load should not use the global!
ret int %reg112
end
define i32 @createtask() {
%v1 = alloca i32 ;; Alloca should have one use!
%reg112 = load i32* %v1 ;; This load should not use the global!
ret i32 %reg112
}

View File

@ -1,13 +1,10 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; It looks like the assembler is not forward resolving the function declaraion
; correctly.
void "test"()
begin
call void %foo()
ret void
end
declare void "foo"()
define void @test() {
call void @foo( )
ret void
}
declare void @foo()

View File

@ -1,69 +1,67 @@
; 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: llvm-upgrade < %s | llvm-as -o /dev/null -f
; END.
%ALL_INTERSECTIONS_METHOD = type int (%OBJECT*, %RAY*, %ISTACK*)*
; long. The type resolution code needs to be sped up a lot.
; RUN: llvm-as < %s -o /dev/null -f
%ALL_INTERSECTIONS_METHOD = type i32 (%OBJECT*, %RAY*, %ISTACK*)*
%BBOX = type { %BBOX_VECT, %BBOX_VECT }
%BBOX_TREE = type { short, short, %BBOX, %BBOX_TREE** }
%BBOX_TREE = type { i16, i16, %BBOX, %BBOX_TREE** }
%BBOX_VECT = type [3 x float]
%BLEND_MAP = type { short, short, short, int, %BLEND_MAP_ENTRY* }
%BLEND_MAP_ENTRY = type { float, ubyte, { %COLOUR, %PIGMENT*, %TNORMAL*, %TEXTURE*, %UV_VECT } }
%CAMERA = type { %VECTOR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, double, double, int, double, double, int, double, %TNORMAL* }
%BLEND_MAP = type { i16, i16, i16, i32, %BLEND_MAP_ENTRY* }
%BLEND_MAP_ENTRY = type { float, i8, { %COLOUR, %PIGMENT*, %TNORMAL*, %TEXTURE*, %UV_VECT } }
%CAMERA = type { %VECTOR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, double, double, i32, double, double, i32, double, %TNORMAL* }
%COLOUR = type [5 x float]
%COPY_METHOD = type sbyte* (%OBJECT*)*
%COUNTER = type { uint, uint }
%DENSITY_FILE = type { int, %DENSITY_FILE_DATA* }
%DENSITY_FILE_DATA = type { int, sbyte*, int, int, int, ubyte*** }
%COPY_METHOD = type i8* (%OBJECT*)*
%COUNTER = type { i32, i32 }
%DENSITY_FILE = type { i32, %DENSITY_FILE_DATA* }
%DENSITY_FILE_DATA = type { i32, i8*, i32, i32, i32, i8*** }
%DESTROY_METHOD = type void (%OBJECT*)*
%FILE = type { int, ubyte*, ubyte*, ubyte, ubyte, uint, uint, uint }
%FILE_HANDLE = type { sbyte*, int, int, int, int, sbyte*, %FILE*, int, int (%FILE_HANDLE*, sbyte*, int*, int*, int, int)*, void (%FILE_HANDLE*, %COLOUR*, int)*, int (%FILE_HANDLE*, %COLOUR*, int*)*, void (%IMAGE*, sbyte*)*, void (%FILE_HANDLE*)* }
%FILE = type { i32, i8*, i8*, i8, i8, i32, i32, i32 }
%FILE_HANDLE = type { i8*, i32, i32, i32, i32, i8*, %FILE*, i32, i32 (%FILE_HANDLE*, i8*, i32*, i32*, i32, i32)*, void (%FILE_HANDLE*, %COLOUR*, i32)*, i32 (%FILE_HANDLE*, %COLOUR*, i32*)*, void (%IMAGE*, i8*)*, void (%FILE_HANDLE*)* }
%FINISH = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, %BBOX_VECT, %BBOX_VECT }
%FOG = type { int, double, double, double, %COLOUR, %VECTOR, %TURB*, float, %FOG* }
%FRAME = type { %CAMERA*, int, int, int, %LIGHT_SOURCE*, %OBJECT*, double, double, %COLOUR, %COLOUR, %COLOUR, %IMEDIA*, %FOG*, %RAINBOW*, %SKYSPHERE* }
%FRAMESEQ = type { int, double, int, int, double, int, int, double, int, double, int, double, uint, uint }
%IMAGE = type { int, int, int, int, int, short, short, %VECTOR, float, float, int, int, short, %IMAGE_COLOUR*, { %IMAGE_LINE*, ubyte** } }
%IMAGE_COLOUR = type { ushort, ushort, ushort, ushort, ushort }
%IMAGE_LINE = type { ubyte*, ubyte*, ubyte*, ubyte* }
%IMEDIA = type { int, int, int, int, int, double, double, int, int, int, int, %COLOUR, %COLOUR, %COLOUR, %COLOUR, double, double, double, double*, %PIGMENT*, %IMEDIA* }
%INSIDE_METHOD = type int (double*, %OBJECT*)*
%INTERIOR = type { int, int, float, float, float, float, float, %IMEDIA* }
%INTERSECTION = type { double, %VECTOR, %VECTOR, %OBJECT*, int, int, double, double, sbyte* }
%FOG = type { i32, double, double, double, %COLOUR, %VECTOR, %TURB*, float, %FOG* }
%FRAME = type { %CAMERA*, i32, i32, i32, %LIGHT_SOURCE*, %OBJECT*, double, double, %COLOUR, %COLOUR, %COLOUR, %IMEDIA*, %FOG*, %RAINBOW*, %SKYSPHERE* }
%FRAMESEQ = type { i32, double, i32, i32, double, i32, i32, double, i32, double, i32, double, i32, i32 }
%IMAGE = type { i32, i32, i32, i32, i32, i16, i16, %VECTOR, float, float, i32, i32, i16, %IMAGE_COLOUR*, { %IMAGE_LINE*, i8** } }
%IMAGE_COLOUR = type { i16, i16, i16, i16, i16 }
%IMAGE_LINE = type { i8*, i8*, i8*, i8* }
%IMEDIA = type { i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, %COLOUR, %COLOUR, %COLOUR, %COLOUR, double, double, double, double*, %PIGMENT*, %IMEDIA* }
%INSIDE_METHOD = type i32 (double*, %OBJECT*)*
%INTERIOR = type { i32, i32, float, float, float, float, float, %IMEDIA* }
%INTERSECTION = type { double, %VECTOR, %VECTOR, %OBJECT*, i32, i32, double, double, i8* }
%INVERT_METHOD = type void (%OBJECT*)*
%ISTACK = type { %ISTACK*, %INTERSECTION*, uint }
%LIGHT_SOURCE = type { %METHODS*, int, %OBJECT*, %TEXTURE*, %INTERIOR*, %OBJECT*, %OBJECT*, %BBOX, uint, %OBJECT*, %COLOUR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, double, double, double, double, double, %LIGHT_SOURCE*, ubyte, ubyte, ubyte, ubyte, int, int, int, int, int, %COLOUR**, %OBJECT*, [6 x %PROJECT_TREE_NODE*] }
%ISTACK = type { %ISTACK*, %INTERSECTION*, i32 }
%LIGHT_SOURCE = type { %METHODS*, i32, %OBJECT*, %TEXTURE*, %INTERIOR*, %OBJECT*, %OBJECT*, %BBOX, i32, %OBJECT*, %COLOUR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, %VECTOR, double, double, double, double, double, %LIGHT_SOURCE*, i8, i8, i8, i8, i32, i32, i32, i32, i32, %COLOUR**, %OBJECT*, [6 x %PROJECT_TREE_NODE*] }
%MATRIX = type [4 x %VECTOR_4D]
%METHODS = type { %ALL_INTERSECTIONS_METHOD, %INSIDE_METHOD, %NORMAL_METHOD, %COPY_METHOD, %ROTATE_METHOD, %ROTATE_METHOD, %ROTATE_METHOD, %TRANSFORM_METHOD, %DESTROY_METHOD, %DESTROY_METHOD }
%NORMAL_METHOD = type void (double*, %OBJECT*, %INTERSECTION*)*
%OBJECT = type { %METHODS*, int, %OBJECT*, %TEXTURE*, %INTERIOR*, %OBJECT*, %OBJECT*, %BBOX, uint }
%Opts = type { int, uint, sbyte, sbyte, sbyte, int, [150 x sbyte], [150 x sbyte], [150 x sbyte], [150 x sbyte], [150 x sbyte], double, double, uint, int, double, double, int, [25 x sbyte*], int, int, int, double, double, int, int, double, double, double, uint, int, int, int, int, %FRAMESEQ, double, int, double, double, double, double, double, int, int, int, int, int, int, int, int, int, int, int, int, int, [150 x sbyte], %SHELLDATA*, [150 x sbyte], int, int }
%PIGMENT = type { ushort, ushort, ushort, int, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, short, short, short, { float, %VECTOR }, %complex.float }, %COLOUR }
%PRIORITY_QUEUE = type { uint, uint, %QELEM* }
%PROJECT = type { int, int, int, int }
%PROJECT_QUEUE = type { uint, uint, %PROJECT_TREE_NODE** }
%PROJECT_TREE_NODE = type { ushort, %BBOX_TREE*, %PROJECT, ushort, %PROJECT_TREE_NODE** }
%OBJECT = type { %METHODS*, i32, %OBJECT*, %TEXTURE*, %INTERIOR*, %OBJECT*, %OBJECT*, %BBOX, i32 }
%Opts = type { i32, i32, i8, i8, i8, i32, [150 x i8], [150 x i8], [150 x i8], [150 x i8], [150 x i8], double, double, i32, i32, double, double, i32, [25 x i8*], i32, i32, i32, double, double, i32, i32, double, double, double, i32, i32, i32, i32, i32, %FRAMESEQ, double, i32, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [150 x i8], %SHELLDATA*, [150 x i8], i32, i32 }
%PIGMENT = type { i16, i16, i16, i32, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, i16, i16, i16, { float, %VECTOR }, %complex.float }, %COLOUR }
%PRIORITY_QUEUE = type { i32, i32, %QELEM* }
%PROJECT = type { i32, i32, i32, i32 }
%PROJECT_QUEUE = type { i32, i32, %PROJECT_TREE_NODE** }
%PROJECT_TREE_NODE = type { i16, %BBOX_TREE*, %PROJECT, i16, %PROJECT_TREE_NODE** }
%QELEM = type { double, %BBOX_TREE* }
%RAINBOW = type { double, double, double, double, double, double, double, %VECTOR, %VECTOR, %VECTOR, %PIGMENT*, %RAINBOW* }
%RAY = type { %VECTOR, %VECTOR, int, [100 x %INTERIOR*] }
%RAY = type { %VECTOR, %VECTOR, i32, [100 x %INTERIOR*] }
%RAYINFO = type { %VECTOR, %VECTOR, %VECTORI, %VECTORI }
%RGB = type [3 x float]
%ROTATE_METHOD = type void (%OBJECT*, double*, %TRANSFORM*)*
%SCALE_METHOD = type void (%OBJECT*, double*, %TRANSFORM*)*
%SHELLDATA = type { int, int, [250 x sbyte] }
%SKYSPHERE = type { int, %PIGMENT**, %TRANSFORM* }
%SHELLDATA = type { i32, i32, [250 x i8] }
%SKYSPHERE = type { i32, %PIGMENT**, %TRANSFORM* }
%SNGL_VECT = type [3 x float]
%TEXTURE = type { ushort, ushort, ushort, int, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, short, short, short, { float, %VECTOR }, %complex.float }, %TEXTURE*, %PIGMENT*, %TNORMAL*, %FINISH*, %TEXTURE*, int }
%TNORMAL = type { ushort, ushort, ushort, int, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, short, short, short, { float, %VECTOR }, %complex.float }, float }
%TPATTERN = type { ushort, ushort, ushort, int, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, short, short, short, { float, %VECTOR }, %complex.float } }
%TEXTURE = type { i16, i16, i16, i32, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, i16, i16, i16, { float, %VECTOR }, %complex.float }, %TEXTURE*, %PIGMENT*, %TNORMAL*, %FINISH*, %TEXTURE*, i32 }
%TNORMAL = type { i16, i16, i16, i32, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, i16, i16, i16, { float, %VECTOR }, %complex.float }, float }
%TPATTERN = type { i16, i16, i16, i32, float, float, float, %WARP*, %TPATTERN*, %BLEND_MAP*, { %DENSITY_FILE*, %IMAGE*, %VECTOR, float, i16, i16, i16, { float, %VECTOR }, %complex.float } }
%TRANSFORM = type { %MATRIX, %MATRIX }
%TRANSFORM_METHOD = type void (%OBJECT*, %TRANSFORM*)*
%TRANSLATE_METHOD = type void (%OBJECT*, double*, %TRANSFORM*)*
%TURB = type { ushort, %WARP*, %VECTOR, int, float, float }
%TURB = type { i16, %WARP*, %VECTOR, i32, float, float }
%UV_VECT = type [2 x double]
%VECTOR = type [3 x double]
%VECTORI = type [3 x int]
%VECTORI = type [3 x i32]
%VECTOR_4D = type [4 x double]
%WARP = type { ushort, %WARP* }
%__FILE = type { int, ubyte*, ubyte*, ubyte, ubyte, uint, uint, uint }
%_h_val = type { [2 x uint], double }
%WARP = type { i16, %WARP* }
%__FILE = type { i32, i8*, i8*, i8, i8, i32, i32, i32 }
%_h_val = type { [2 x i32], double }
%complex.float = type { float, float }

View File

@ -1,11 +1,9 @@
; Test to make sure that the 'internal' tag is not lost!
;
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep internal
; RUN: llvm-as < %s | llvm-dis | grep internal
declare void %foo()
implementation
declare void @foo()
internal void %foo() {
ret void
define internal void @foo() {
ret void
}

View File

@ -1,12 +1,10 @@
; Test that opaque types are preserved correctly
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as | llvm-dis
; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis
;
%Ty = type opaque
implementation
%Ty* %func() {
define %Ty* @func() {
ret %Ty* null
}

View File

@ -1,6 +1,5 @@
; Test double quotes in strings work correctly!
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as | llvm-dis
; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis
;
%str = internal global [6 x sbyte] c"\22foo\22\00"
@str = internal global [6 x i8] c"\22foo\22\00" ; <[6 x i8]*> [#uses=0]

View File

@ -1,13 +1,15 @@
; Test that returning a pointer to a function causes the disassembler to print
; the right thing.
;
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as
; RUN: llvm-as < %s | llvm-dis | llvm-as
%ty = type void (int)
%ty = type void (i32)
declare %ty* %foo()
declare %ty* @foo()
void %test() {
call %ty*()* %foo()
ret void
define void @test() {
call %ty* ()* @foo( ) ; <%ty*>:1 [#uses=0]
ret void
}

View File

@ -1,5 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as
; RUN: llvm-as < %s | llvm-dis | llvm-as
; Make sure that \\ works in a string initializer
%Slashtest = internal global [8 x sbyte] c"\5Cbegin{\00"
@Slashtest = internal global [8 x i8] c"\5Cbegin{\00"

View File

@ -1,8 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
void %test(int %X) {
call void (int)* cast (void(int) * %test to void(int) *) (int 6)
ret void
; RUN: llvm-as < %s -o /dev/null -f
define void @test(i32 %X) {
call void @test( i32 6 )
ret void
}

View File

@ -1,17 +1,16 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
%.LC0 = internal global [12 x sbyte] c"hello world\00"
@.LC0 = internal global [12 x i8] c"hello world\00" ; <[12 x i8]*> [#uses=1]
implementation ; Functions:
sbyte* %test() {
define i8* @test() {
; <label>:0
br label %BB1
BB1: ;[#uses=2]
%ret = phi sbyte* [ getelementptr ([12 x sbyte]* %.LC0, long 0, long 0), %0 ], [ null, %BB2 ]
ret sbyte* %ret
BB1: ; preds = %BB2, %0
%ret = phi i8* [ getelementptr ([12 x i8]* @.LC0, i64 0, i64 0), %0 ], [ null, %BB2 ] ; <i8*> [#uses=1]
ret i8* %ret
BB2:
BB2: ; No predecessors!
br label %BB1
}

View File

@ -1,10 +1,8 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
%.LC0 = internal global [12 x sbyte] c"hello world\00" ; <[12 x sbyte]*> [#uses=1]
@.LC0 = internal global [12 x i8] c"hello world\00" ; <[12 x i8]*> [#uses=1]
implementation ; Functions:
sbyte* %test() {
ret sbyte* getelementptr ([12 x sbyte]* %.LC0, long 0, long 0)
define i8* @test() {
ret i8* getelementptr ([12 x i8]* @.LC0, i64 0, i64 0)
}

View File

@ -1,5 +1,5 @@
; In this testcase, the bytecode reader or writer is not correctly handling the
; ConstExpr reference. Disassembling this program assembled yields invalid
; ConstExpr reference. Disassembling this program assembled yields invalid
; assembly (because there are placeholders still around), which the assembler
; dies on.
@ -7,19 +7,16 @@
; disassembling this would be good, but in addition to that, the bytecode
; reader should NEVER produce a program "successfully" with placeholders still
; around!
;
; RUN: llvm-as < %s | llvm-dis | llvm-as
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as
@.LC0 = internal global [4 x i8] c"foo\00" ; <[4 x i8]*> [#uses=1]
@X = global i8* null ; <i8**> [#uses=0]
%.LC0 = internal global [4 x sbyte] c"foo\00" ; <[4 x sbyte]*> [#uses=1]
declare i32 @puts(i8*)
%X = global sbyte * null
implementation ; Functions:
declare int %puts(sbyte*)
void %main() {
bb1: ;[#uses=0]
%reg211 = call int %puts( sbyte* getelementptr ([4 x sbyte]* %.LC0, uint 0, uint 0) ) ; <int> [#uses=0]
define void @main() {
bb1:
%reg211 = call i32 @puts( i8* getelementptr ([4 x i8]* @.LC0, i64 0, i64 0) ) ; <i32> [#uses=0]
ret void
}

View File

@ -1,22 +1,17 @@
; Testcase that seems to break the bytecode reader. This comes from the
; Testcase that seems to break the bytecode reader. This comes from the
; "crafty" spec benchmark.
;
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | llvm-as
; RUN: llvm-as < %s | opt -instcombine | llvm-dis | llvm-as
%CHESS_POSITION = type { i32, i32 }
@pawn_probes = external global i32 ; <i32*> [#uses=0]
@pawn_hash_mask = external global i32 ; <i32*> [#uses=0]
@search = external global %CHESS_POSITION ; <%CHESS_POSITION*> [#uses=2]
%CHESS_POSITION = type { uint, int }
%pawn_probes = uninitialized global int ; <int*> [#uses=1]
%pawn_hash_mask = uninitialized global uint ; <uint*> [#uses=0]
%search = uninitialized global %CHESS_POSITION ; <%CHESS_POSITION*> [#uses=6]
implementation ; Functions:
void %Evaluate() {
%reg1321 = getelementptr %CHESS_POSITION* %search, uint 0, ubyte 1
%reg114 = load int* %reg1321 ; <int> [#uses=0]
%reg1801 = getelementptr %CHESS_POSITION* %search, uint 0, ubyte 0
%reg182 = load uint* %reg1801 ; <uint> [#uses=1]
define void @Evaluate() {
%reg1321 = getelementptr %CHESS_POSITION* @search, i64 0, i32 1 ; <i32*> [#uses=1]
%reg114 = load i32* %reg1321 ; <i32> [#uses=0]
%reg1801 = getelementptr %CHESS_POSITION* @search, i64 0, i32 0 ; <i32*> [#uses=1]
%reg182 = load i32* %reg1801 ; <i32> [#uses=0]
ret void
}

View File

@ -1,15 +1,17 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; Dominance relationships is not calculated correctly for unreachable blocks,
; which causes the verifier to barf on this input.
int %test(bool %b) {
BB0: ret int 7 ; Loop is unreachable
define i32 @test(i1 %b) {
BB0:
ret i32 7 ; Loop is unreachable
Loop:
%B = phi int [%B, %L2], [%B, %Loop] ; PHI has same value always.
br bool %b, label %L2, label %Loop
L2:
Loop: ; preds = %L2, %Loop
%B = phi i32 [ %B, %L2 ], [ %B, %Loop ] ;PHI has same value always.
br i1 %b, label %L2, label %Loop
L2: ; preds = %Loop
br label %Loop
}

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
; RUN: llvm-as < %s | llvm-dis
%Domain = type { %Domain**, %Domain* }
%D = global %Domain { %Domain** null, %Domain* null }
implementation
@D = global %Domain zeroinitializer ; <%Domain*> [#uses=0]

View File

@ -1,7 +1,7 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
declare int "ArrayRef"([100 x int] * %Array)
declare i32 @"ArrayRef"([100 x i32] * %Array)
int "ArrayRef"([100 x int] * %Array) {
ret int 0
define i32 @"ArrayRef"([100 x i32] * %Array) {
ret i32 0
}

View File

@ -1,10 +1,7 @@
; RUN: llvm-upgrade < %s 2>/dev/null | llvm-as -o /dev/null -f
; RUN: llvm-upgrade < %s |& grep {Renaming global variable 'X' to}
; RUN: llvm-as < %s -o /dev/null -f
%X = external global uint *
%X = external global %T*
%X = external global int *
@X = external global i32*
@X1 = external global %T*
@X2 = external global i32*
%T = type int
implementation
%T = type i32

View File

@ -1,5 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
%spell_order = global [4 x ubyte] c"\FF\00\F7\00"
@spell_order = global [4 x i8] c"\FF\00\F7\00"

View File

@ -1,9 +1,7 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; There should be absolutely no problem with this testcase.
implementation
int %test(int %arg1, int %arg2) {
ret int cast (int (int, int)* %test to int)
define i32 @test(i32 %arg1, i32 %arg2) {
ret i32 ptrtoint (i32 (i32, i32)* @test to i32)
}

View File

@ -1,6 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
; RUN: llvm-as < %s | llvm-dis
void %test() {
%tmp.123 = cast long cast ([5 x { ubyte, sbyte }]* getelementptr ([30 x [5 x { ubyte, sbyte }]]* null, long 0, long 0) to long) to int
ret void
define void @test() {
%tmp.123 = trunc i64 0 to i32 ; <i32> [#uses=0]
ret void
}

View File

@ -1,5 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep -- -2147483648
; RUN: llvm-as < %s | llvm-dis | grep -- -2147483648
int %foo() {
ret int -2147483648
define i32 @foo() {
ret i32 -2147483648
}

View File

@ -1,15 +1,14 @@
; This bug was caused by two CPR's existing for the same global variable,
; colliding in the Module level CPR map.
; RUN: llvm-as < %s -o /dev/null -f
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
void %test() {
call void (...)* cast (void (short*, int)* %AddString to void (...)*)(short* null, int 0)
define void @test() {
call void (...)* bitcast (void (i16*, i32)* @AddString to void (...)*)( i16* null, i32 0 )
ret void
}
void %AddString(short* %tmp.124, int %tmp.127) {
call void (...)* cast (void (short*, int)* %AddString to void (...)*)(short* %tmp.124, int %tmp.127)
ret void
define void @AddString(i16* %tmp.124, i32 %tmp.127) {
call void (...)* bitcast (void (i16*, i32)* @AddString to void (...)*)( i16* %tmp.124, i32 %tmp.127 )
ret void
}

View File

@ -1,9 +1,11 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; Check minimal switch statement
void %test(int %X) {
switch int %X, label %dest []
dest:
ret void
define void @test(i32 %X) {
switch i32 %X, label %dest [
]
dest: ; preds = %0
ret void
}

View File

@ -1,5 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; Test that shift instructions can be used in constant expressions.
global int shl (int 7, ubyte 19)
global i32 3670016

View File

@ -1,6 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; The old C front-end never generated empty structures, now the new one
; can. For some reason we never handled them in the parser. Weird.
%X = global {} {}
@X = global { } zeroinitializer

View File

@ -1,6 +1,9 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
void %test() {
invoke void %test() to label %Next except label %Next
Next:
ret void
; RUN: llvm-as < %s | llvm-dis
define void @test() {
invoke void @test( )
to label %Next unwind label %Next
Next: ; preds = %0, %0
ret void
}

View File

@ -1,7 +1,3 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
%MidFnTy = type void (void (%MidFnTy* )*)
implementation
; RUN: llvm-as < %s -o /dev/null -f
%MidFnTy = type void (%MidFnTy*)

View File

@ -1,18 +1,16 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine -simplifycfg | llvm-dis | not grep br
; RUN: llvm-as < %s | opt -instcombine -simplifycfg | llvm-dis | not grep br
%.str_1 = internal constant [6 x sbyte] c"_Bool\00" ; <[6 x sbyte]*> [#uses=1]
@.str_1 = internal constant [6 x i8] c"_Bool\00" ; <[6 x i8]*> [#uses=2]
implementation
define i32 @test() {
%tmp.54 = load i8* getelementptr ([6 x i8]* @.str_1, i64 0, i64 1) ; <i8> [#uses=1]
%tmp.55 = icmp ne i8 %tmp.54, 66 ; <i1> [#uses=1]
br i1 %tmp.55, label %then.7, label %endif.7
int %test() {
%tmp.54 = load sbyte* getelementptr (sbyte* getelementptr ([6 x sbyte]* %.str_1, long 0, long 0), long 1)
; <sbyte> [#uses=1]
%tmp.55 = setne sbyte %tmp.54, 66 ; <bool> [#uses=1]
br bool %tmp.55, label %then.7, label %endif.7
then.7:
br label %then.7
endif.7:
ret int 0
then.7: ; preds = %then.7, %0
br label %then.7
endif.7: ; preds = %0
ret i32 0
}

View File

@ -1,5 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | not grep getelementptr
%A = external global { float } ; <{ float }*> [#uses=1]
global int* cast (float* getelementptr ({ float }* %A, long 0, ubyte 0) to int*)
; RUN: llvm-as < %s | llvm-dis | not grep getelementptr
@A = external global { float } ; <{ float }*> [#uses=2]
global i32* bitcast ({ float }* @A to i32*) ; <i32**>:0 [#uses=0]

View File

@ -1,7 +1,6 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
%T = type opaque
%X = global %T* null
%Y = global int* null
%T = type i32
@X = global i32* null ; <i32**> [#uses=0]
@Y = global i32* null ; <i32**> [#uses=0]
%T = type int

View File

@ -1,5 +1,5 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis
; RUN: llvm-as < %s | llvm-dis
int %test() {
ret int shr (int cast (int()* %test to int), ubyte 2)
define i32 @test() {
ret i32 ashr (i32 ptrtoint (i32 ()* @test to i32), i32 2)
}

View File

@ -1,10 +1,10 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | not grep { bitcast (}
; RUN: llvm-as < %s | llvm-dis | not grep { bitcast (}
%.Base64_1 = external constant [4 x sbyte]
@.Base64_1 = external constant [4 x i8] ; <[4 x i8]*> [#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
define i8 @test(i8 %Y) {
%X = bitcast i8 %Y to i8 ; <i8> [#uses=1]
%tmp.13 = add i8 %X, sub (i8 0, i8 ptrtoint ([4 x i8]* @.Base64_1 to i8)) ; <i8> [#uses=1]
ret i8 %tmp.13
}

View File

@ -1,12 +1,12 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | \
; RUN: llvm-as < %s | llvm-dis | \
; RUN: not grep {getelementptr.*getelementptr}
%struct.TUVVertex = type { short, short, short, short }
%struct.TTriangleItem = type { sbyte*, sbyte*, [3 x %struct.TUVVertex] }
%struct.TTriangleItem = type { i8*, i8*, [3 x %struct.TUVVertex] }
%struct.TUVVertex = type { i16, i16, i16, i16 }
@data_triangleItems = internal constant [2908 x %struct.TTriangleItem] zeroinitializer; <[2908 x %struct.TTriangleItem]*> [#uses=2]
%data_triangleItems = internal constant [2908 x %struct.TTriangleItem] zeroinitializer
void %foo() {
store short 0, short* getelementptr ([3 x %struct.TUVVertex]* getelementptr ([2908 x %struct.TTriangleItem]* %data_triangleItems, long 0, long 0, ubyte 2), long 0, long 0, ubyte 0)
ret void
define void @foo() {
store i16 0, i16* getelementptr ([2908 x %struct.TTriangleItem]* @data_triangleItems, i64 0, i64 0, i32 2, i64 0, i32 0)
ret void
}

View File

@ -1,4 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep 9223372036854775808
; RUN: llvm-as < %s | llvm-dis | grep 9223372036854775808
global long -9223372036854775808
global i64 -9223372036854775808

View File

@ -1,5 +1,4 @@
; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | grep -- -0.0
; RUN: llvm-as < %s | llvm-dis | grep -- -0.0
global double 0x8000000000000000
global float -0.0

View File

@ -1,23 +1,23 @@
; RUN: llvm-upgrade < %s | llvm-as -o /dev/null -f
; RUN: llvm-as < %s -o /dev/null -f
; %inc2 uses it's own value, but that's ok, as it's unreachable!
void %test() {
define void @test() {
entry:
ret void
no_exit.2: ; preds = %endif.6
%tmp.103 = setlt double 0x0, 0x0 ; <bool> [#uses=1]
br bool %tmp.103, label %endif.6, label %else.0
%tmp.103 = fcmp olt double 0.000000e+00, 0.000000e+00 ; <i1> [#uses=1]
br i1 %tmp.103, label %endif.6, label %else.0
else.0: ; preds = %no_exit.2
store ushort 0, ushort* null
store i16 0, i16* null
br label %endif.6
endif.6: ; preds = %no_exit.2, %else.0
%inc.2 = add int %inc.2, 1 ; <int> [#uses=2]
%tmp.96 = setlt int %inc.2, 0 ; <bool> [#uses=1]
br bool %tmp.96, label %no_exit.2, label %UnifiedReturnBlock1
endif.6: ; preds = %else.0, %no_exit.2
%inc.2 = add i32 %inc.2, 1 ; <i32> [#uses=2]
%tmp.96 = icmp slt i32 %inc.2, 0 ; <i1> [#uses=1]
br i1 %tmp.96, label %no_exit.2, label %UnifiedReturnBlock1
UnifiedReturnBlock1: ; preds = %endif.6
ret void