I have generated the below llvm ir using the command `./bin/llvm-goc -S test.go -dump-ir`. I expected there are some llvm intrinsics that have been used to handle stack overflow. But it is not there. How does gollvm handle stackoverflow?
define void @main.main(i8* nest %nest.0) #0 !dbg !14 {
entry:
call void @main.foo(i8* nest undef), !dbg !15
ret void
}
define void @main.foo(i8* nest %nest.1) #0 !dbg !16 {
entry:
%a = alloca i64, align 8
%0 = bitcast i64* %a to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %0)
store i64 5, i64* %a, align 8
call void @llvm.dbg.declare(metadata i64* %a, metadata !17, metadata !DIExpression()), !dbg !20
%a.ld.0 = load i64, i64* %a, align 8, !dbg !21
call void @main.foo(i8* nest undef), !dbg !22
%1 = bitcast i64* %a to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %1)
ret void
}