Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions cl/_testdata/embedunexport/embedunexport.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,16 @@ type Base struct {
// CHECK: define %"{{.*}}.String" @"{{.*}}.(*Base).Name"(ptr %0){{.*}} {
// CHECK-NEXT: _llgo_0:
// CHECK-NEXT: %1 = getelementptr inbounds %"{{.*}}.Base", ptr %0, i32 0, i32 0
// CHECK-NEXT: %2 = load %"{{.*}}.String", ptr %1, align 8
// CHECK-NEXT: ret %"{{.*}}.String" %2
// CHECK-NEXT: %2 = icmp eq ptr %0, null
// CHECK-NEXT: br i1 %2, label %3, label %4
// CHECK-EMPTY:
// CHECK-NEXT: 3:{{.*}}; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 4:{{.*}}; preds = %_llgo_0
// CHECK-NEXT: %5 = load %"{{.*}}.String", ptr %1, align 8
// CHECK-NEXT: ret %"{{.*}}.String" %5
// CHECK-NEXT: }
func (b *Base) Name() string {
return b.name
Expand Down
76 changes: 58 additions & 18 deletions cl/_testdata/geometry1370/geometry.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,44 @@ func NewRectangle(width, height float64) *Rectangle {
// CHECK-LABEL: define double @"{{.*}}/cl/_testdata/geometry1370.(*Rectangle).Area"(ptr %0){{.*}} {
// CHECK-NEXT: _llgo_0:
// CHECK-NEXT: %1 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 0
// CHECK-NEXT: %2 = load double, ptr %1, align 8
// CHECK-NEXT: %3 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 1
// CHECK-NEXT: %4 = load double, ptr %3, align 8
// CHECK-NEXT: %5 = fmul double %2, %4
// CHECK-NEXT: ret double %5
// CHECK-NEXT: %2 = icmp eq ptr %0, null
// CHECK-NEXT: br i1 %2, label %3, label %4
// CHECK-EMPTY:
// CHECK-NEXT: 3: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 4: ; preds = %_llgo_0
// CHECK-NEXT: %5 = load double, ptr %1, align 8
// CHECK-NEXT: %6 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 1
// CHECK-NEXT: %7 = icmp eq ptr %0, null
// CHECK-NEXT: br i1 %7, label %8, label %9
// CHECK-EMPTY:
// CHECK-NEXT: 8: ; preds = %4
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 9: ; preds = %4
// CHECK-NEXT: %10 = load double, ptr %6, align 8
// CHECK-NEXT: %11 = fmul double %5, %10
// CHECK-NEXT: ret double %11
// CHECK-NEXT: }

func (r *Rectangle) Area() float64 { return r.Width * r.Height }

// CHECK-LABEL: define i64 @"{{.*}}/cl/_testdata/geometry1370.(*Rectangle).GetID"(ptr %0){{.*}} {
// CHECK-NEXT: _llgo_0:
// CHECK-NEXT: %1 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 2
// CHECK-NEXT: %2 = load i64, ptr %1, align 8
// CHECK-NEXT: ret i64 %2
// CHECK-NEXT: %2 = icmp eq ptr %0, null
// CHECK-NEXT: br i1 %2, label %3, label %4
// CHECK-EMPTY:
// CHECK-NEXT: 3: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 4: ; preds = %_llgo_0
// CHECK-NEXT: %5 = load i64, ptr %1, align 8
// CHECK-NEXT: ret i64 %5
// CHECK-NEXT: }

func (r *Rectangle) GetID() int { return r.id }
Expand All @@ -59,19 +83,35 @@ func (r *Rectangle) setID(id int) { r.id = id }
// CHECK-LABEL: define i1 @"{{.*}}/cl/_testdata/geometry1370.(*Rectangle).validate"(ptr %0){{.*}} {
// CHECK-NEXT: _llgo_0:
// CHECK-NEXT: %1 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 0
// CHECK-NEXT: %2 = load double, ptr %1, align 8
// CHECK-NEXT: %3 = fcmp ogt double %2, 0.000000e+00
// CHECK-NEXT: br i1 %3, label %_llgo_1, label %_llgo_2
// CHECK-NEXT: %2 = icmp eq ptr %0, null
// CHECK-NEXT: br i1 %2, label %6, label %7
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_1: ; preds = %_llgo_0
// CHECK-NEXT: %4 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 1
// CHECK-NEXT: %5 = load double, ptr %4, align 8
// CHECK-NEXT: %6 = fcmp ogt double %5, 0.000000e+00
// CHECK-NEXT: br label %_llgo_2
// CHECK-NEXT: _llgo_1: ; preds = %7
// CHECK-NEXT: %3 = getelementptr inbounds %"{{.*}}/cl/_testdata/geometry1370.Rectangle", ptr %0, i32 0, i32 1
// CHECK-NEXT: %4 = icmp eq ptr %0, null
// CHECK-NEXT: br i1 %4, label %10, label %11
// CHECK-EMPTY:
// CHECK-NEXT: _llgo_2: ; preds = %_llgo_1, %_llgo_0
// CHECK-NEXT: %7 = phi i1 [ false, %_llgo_0 ], [ %6, %_llgo_1 ]
// CHECK-NEXT: ret i1 %7
// CHECK-NEXT: _llgo_2: ; preds = %11, %7
// CHECK-NEXT: %5 = phi i1 [ false, %7 ], [ %13, %11 ]
// CHECK-NEXT: ret i1 %5
// CHECK-EMPTY:
// CHECK-NEXT: 6: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 7: ; preds = %_llgo_0
// CHECK-NEXT: %8 = load double, ptr %1, align 8
// CHECK-NEXT: %9 = fcmp ogt double %8, 0.000000e+00
// CHECK-NEXT: br i1 %9, label %_llgo_1, label %_llgo_2
// CHECK-EMPTY:
// CHECK-NEXT: 10: ; preds = %_llgo_1
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 11: ; preds = %_llgo_1
// CHECK-NEXT: %12 = load double, ptr %3, align 8
// CHECK-NEXT: %13 = fcmp ogt double %12, 0.000000e+00
// CHECK-NEXT: br label %_llgo_2
// CHECK-NEXT: }

func (r *Rectangle) validate() bool { return r.Width > 0 && r.Height > 0 }
Expand Down
48 changes: 36 additions & 12 deletions cl/_testdata/print/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,43 @@ type stringStruct struct {
// CHECK-NEXT: %2 = call ptr @"{{.*}}/runtime/internal/runtime.AllocZ"(i64 24)
// CHECK-NEXT: %3 = call ptr @main.stringStructOf(ptr %1)
// CHECK-NEXT: %4 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 0
// CHECK-NEXT: %5 = load ptr, ptr %4, align 8
// CHECK-NEXT: %6 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 0
// CHECK-NEXT: store ptr %5, ptr %6, align 8
// CHECK-NEXT: %7 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 1
// CHECK-NEXT: %8 = load i64, ptr %7, align 8
// CHECK-NEXT: %9 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 1
// CHECK-NEXT: store i64 %8, ptr %9, align 8
// CHECK-NEXT: %5 = icmp eq ptr %3, null
// CHECK-NEXT: br i1 %5, label %6, label %7
// CHECK-EMPTY:
// CHECK-NEXT: 6: ; preds = %_llgo_0
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 7: ; preds = %_llgo_0
// CHECK-NEXT: %8 = load ptr, ptr %4, align 8
// CHECK-NEXT: %9 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 0
// CHECK-NEXT: store ptr %8, ptr %9, align 8
// CHECK-NEXT: %10 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 1
// CHECK-NEXT: %11 = load i64, ptr %10, align 8
// CHECK-NEXT: %12 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 2
// CHECK-NEXT: store i64 %11, ptr %12, align 8
// CHECK-NEXT: %13 = load %"{{.*}}/runtime/internal/runtime.Slice", ptr %2, align 8
// CHECK-NEXT: ret %"{{.*}}/runtime/internal/runtime.Slice" %13
// CHECK-NEXT: %11 = icmp eq ptr %3, null
// CHECK-NEXT: br i1 %11, label %12, label %13
// CHECK-EMPTY:
// CHECK-NEXT: 12: ; preds = %7
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 13: ; preds = %7
// CHECK-NEXT: %14 = load i64, ptr %10, align 8
// CHECK-NEXT: %15 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 1
// CHECK-NEXT: store i64 %14, ptr %15, align 8
// CHECK-NEXT: %16 = getelementptr inbounds %main.stringStruct, ptr %3, i32 0, i32 1
// CHECK-NEXT: %17 = icmp eq ptr %3, null
// CHECK-NEXT: br i1 %17, label %18, label %19
// CHECK-EMPTY:
// CHECK-NEXT: 18: ; preds = %13
// CHECK-NEXT: call void @"{{.*}}/runtime/internal/runtime.AssertNilDeref"(i1 true)
// CHECK-NEXT: unreachable
// CHECK-EMPTY:
// CHECK-NEXT: 19: ; preds = %13
// CHECK-NEXT: %20 = load i64, ptr %16, align 8
// CHECK-NEXT: %21 = getelementptr inbounds %main.slice, ptr %2, i32 0, i32 2
// CHECK-NEXT: store i64 %20, ptr %21, align 8
// CHECK-NEXT: %22 = load %"{{.*}}/runtime/internal/runtime.Slice", ptr %2, align 8
// CHECK-NEXT: ret %"{{.*}}/runtime/internal/runtime.Slice" %22
// CHECK-NEXT: }

func bytes(s string) (ret []byte) {
Expand Down
1 change: 0 additions & 1 deletion cl/_testdata/varinit/in.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ var a = 100
// CHECK-NEXT: %0 = load i64, ptr @main.a, align 8
// CHECK-NEXT: %1 = add i64 %0, 1
// CHECK-NEXT: store i64 %1, ptr @main.a, align 8
// CHECK-NEXT: %2 = load i64, ptr @main.a, align 8
// CHECK-NEXT: ret void
// CHECK-NEXT: }
func main() {
Expand Down
Loading
Loading