CS153/hw6/llprograms/gep1.ll
jmug cfe502c598 Add all the assignment code.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 18:59:28 -08:00

27 lines
636 B
LLVM

%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
}