; RUN: llvm-as < %s | llvm-dis > %t1.ll
; RUN: llvm-as < %s | llvm2cpp -gen-program -o %t2.cpp - -f
; RUN: %link -o %t2.exe %t2.cpp -lLLVMCore -lLLVMSupport -lLLVMSystem -lstdc++
; RUN: ./%t2.exe > %t2.ll
; RUN: diff %t1.ll %t2.ll
@X = global i32 4, align 16 ; <i32*> [#uses=0]
define i32* @test1012() align 32 {
%X = alloca i32, align 4 ; <i32*> [#uses=1]
%Y = alloca i32, i32 42, align 16 ; <i32*> [#uses=0]
%Z = alloca i32 ; <i32*> [#uses=0]
ret i32* %X
}
define i32* @test1013() {
%X = malloc i32, align 4 ; <i32*> [#uses=1]
%Y = malloc i32, i32 42, align 16 ; <i32*> [#uses=0]
%Z = malloc i32 ; <i32*> [#uses=0]
ret i32* %X
}
define void @void(i32, i32) {
add i32 0, 0 ; <i32>:3 [#uses=2]
sub i32 0, 4 ; <i32>:4 [#uses=2]
br label %5
; <label>:5 ; preds = %5, %2
add i32 %0, %1 ; <i32>:6 [#uses=2]
sub i32 %6, %4 ; <i32>:7 [#uses=1]
icmp sle i32 %7, %3 ; <i1>:8 [#uses=1]
br i1 %8, label %9, label %5
; <label>:9 ; preds = %5
add i32 %0, %1 ; <i32>:10 [#uses=0]
sub i32 %6, %4 ; <i32>:11 [#uses=1]
icmp sle i32 %11, %3 ; <i1>:12 [#uses=0]
ret void
}
define i32 @zarro() {
Startup:
ret i32 0
}
define fastcc void @foo() {
ret void
}
define coldcc void @bar() {
call fastcc void @foo( )
ret void
}
define void @structret({ i8 }* sret %P) {
call void @structret( { i8 }* %P sret )
ret void
}
define void @foo4() {
ret void
}
define coldcc void @bar2() {
call fastcc void @foo( )
ret void
}
define cc42 void @bar3() {
invoke fastcc void @foo( )
to label %Ok unwind label %U
Ok: ; preds = %0
ret void
U: ; preds = %0
unwind
}
define void @bar4() {
call cc42 void @bar( )
invoke cc42 void @bar3( )
to label %Ok unwind label %U
Ok: ; preds = %0
ret void
U: ; preds = %0
unwind
}
; ModuleID = 'calltest.ll'
%FunTy = type i32 (i32)
define i32 @test1000(i32 %i0) {
ret i32 %i0
}
define void @invoke(%FunTy* %x) {
%foo = call i32 %x( i32 123 ) ; <i32> [#uses=0]
%foo2 = tail call i32 %x( i32 123 ) ; <i32> [#uses=0]
ret void
}
define i32 @main(i32 %argc) {
%retval = call i32 @test1000( i32 %argc ) ; <i32> [#uses=2]
%two = add i32 %retval, %retval ; <i32> [#uses=1]
%retval2 = invoke i32 @test1000( i32 %argc )
to label %Next unwind label %Error ; <i32> [#uses=1]
Next: ; preds = %0
%two2 = add i32 %two, %retval2 ; <i32> [#uses=1]
call void @invoke( %FunTy* @test1000 )
ret i32 %two2
Error: ; preds = %0
ret i32 -1
}
; ModuleID = 'casttest.ll'
define i16 @FunFunc(i64 %x, i8 %z) {
bb0:
%cast110 = sext i8 %z to i16 ; <i16> [#uses=1]
%cast10 = trunc i64 %x to i16 ; <i16> [#uses=1]
%reg109 = add i16 %cast110, %cast10 ; <i16> [#uses=1]
ret i16 %reg109
}
; ModuleID = 'cfgstructures.ll'
define void @irreducible(i1 %cond) {
br i1 %cond, label %X, label %Y
X: ; preds = %Y, %0
br label %Y
Y: ; preds = %X, %0
br label %X
}
define void @sharedheader(i1 %cond) {
br label %A
A: ; preds = %Y, %X, %0
br i1 %cond, label %X, label %Y
X: ; preds = %A
br label %A
Y: ; preds = %A
br label %A
}
define void @nested(i1 %cond1, i1 %cond2, i1 %cond3) {
br label %Loop1
Loop1: ; preds = %L2Exit, %0
br label %Loop2
Loop2: ; preds = %L3Exit, %Loop1
br label %Loop3
Loop3: ; preds = %Loop3, %Loop2
br i1 %cond3, label %Loop3, label %L3Exit
L3Exit: ; preds = %Loop3
br i1 %cond2, label %Loop2, label %L2Exit
L2Exit: ; preds = %L3Exit
br i1 %cond1, label %Loop1, label %L1Exit
L1Exit: ; preds = %L2Exit
ret void
}
; ModuleID = 'constexpr.ll'
%SAType = type { i32, { [2 x float], i64 } }
%SType =