CS153/hw3/llprograms/gep1.ll

28 lines
636 B
LLVM
Raw Permalink Normal View History

%disju = type { i64, i8* }
%var1 = type { i64, i64* }
%var2 = type { i64, i8** }
@gint = global i64 42
@v1 = global %var1 { i64 0, i64* @gint }
@v2 = global %var2 { i64 1, i8** null }
@gstr = global [14 x i8] c"hello, world!\00"
define i64 @main(i64 %argc, i8** %argv) {
%p0 = alloca i64
%p1 = getelementptr %var2, %var2* @v2, i32 0, i32 0
store i64 5, i64* %p1
%vb = bitcast %var2* @v2 to %disju*
call void @foo(%disju* %vb)
%n1 = load i64, i64* %p1
ret i64 %n1
}
define void @foo(%disju* %pu) {
%p1 = getelementptr %disju, %disju* %pu, i32 0, i32 0
store i64 6, i64* %p1
%n1 = load i64, i64* %p1
ret void
}