Merge pull request #122 from xushiwei/q

runtime: c.Uint
This commit is contained in:
xushiwei
2024-05-07 00:17:44 +08:00
committed by GitHub
3 changed files with 52 additions and 0 deletions

2
c/c.go
View File

@@ -16,6 +16,7 @@
package c
// typedef unsigned int uint;
import "C"
import "unsafe"
@@ -26,6 +27,7 @@ const (
type (
Char = int8
Int = C.int
Uint = C.uint
Pointer = unsafe.Pointer
FilePtr = unsafe.Pointer
)

13
cl/_testdata/uint/in.go Normal file
View File

@@ -0,0 +1,13 @@
package main
import "github.com/goplus/llgo/c"
func f(a c.Uint) c.Uint {
a++
return a
}
func main() {
var a c.Uint = 100
c.Printf(c.Str("Hello, %u\n"), f(a))
}

37
cl/_testdata/uint/out.ll Normal file
View File

@@ -0,0 +1,37 @@
; ModuleID = 'main'
source_filename = "main"
@"main.init$guard" = global ptr null
@0 = private unnamed_addr constant [11 x i8] c"Hello, %u\0A\00", align 1
define i32 @main.f(i32 %0) {
_llgo_0:
%1 = add i32 %0, 1
ret i32 %1
}
define void @main.init() {
_llgo_0:
%0 = load i1, ptr @"main.init$guard", align 1
br i1 %0, label %_llgo_2, label %_llgo_1
_llgo_1: ; preds = %_llgo_0
store i1 true, ptr @"main.init$guard", align 1
br label %_llgo_2
_llgo_2: ; preds = %_llgo_1, %_llgo_0
ret void
}
define void @main() {
_llgo_0:
call void @"github.com/goplus/llgo/internal/runtime.init"()
call void @main.init()
%0 = call i32 @main.f(i32 100)
%1 = call i32 (ptr, ...) @printf(ptr @0, i32 %0)
ret void
}
declare void @"github.com/goplus/llgo/internal/runtime.init"()
declare i32 @printf(ptr, ...)