Commit 04f0521
cmd/cgo: skip escape checks if call site has no argument
This CL improves on CL 579955.
When the call site has no argument,
1 package main
2
3 /*
4 #include <stdio.h>
5 void foo() {printf("Hello from C\n");}
6 */
7 import "C"
8
9 func main() {
10 C.foo()
11 }
Escape checks are not needed,
$ go tool cgo -objdir dir cgonoargs.go
$ cat -n dir/_cgo_gotypes.go | sed -n '43,$p'
43 func _Cfunc_foo() (r1 _Ctype_void) {
44 _cgo_runtime_cgocall(_cgo_c8ba2f813f11_Cfunc_foo, uintptr(unsafe.Pointer(&r1)))
45 if _Cgo_always_false {
46 }
47 return
48 }
Skip escape checks if call site has no argument.
$ cat -n dir/_cgo_gotypes.go | sed -n '43,$p'
43 func _Cfunc_foo() (r1 _Ctype_void) {
44 _cgo_runtime_cgocall(_cgo_c8ba2f813f11_Cfunc_foo, uintptr(unsafe.Pointer(&r1)))
45 return
46 }
For #75856
Change-Id: I9aac0b6fb2985f6833976099e7eead1f28971bee
GitHub-Last-Rev: 1aacde4
GitHub-Pull-Request: #76186
Reviewed-on: https://go-review.googlesource.com/c/go/+/718060
LUCI-TryBot-Result: Go LUCI <[email protected]>
Reviewed-by: Keith Randall <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
Reviewed-by: Michael Pratt <[email protected]>
Reviewed-by: Keith Randall <[email protected]>
Auto-Submit: Keith Randall <[email protected]>1 parent 9f3a108 commit 04f0521
1 file changed
+5
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
649 | 649 | | |
650 | 650 | | |
651 | 651 | | |
652 | | - | |
653 | | - | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
654 | 655 | | |
655 | 656 | | |
656 | 657 | | |
| 658 | + | |
657 | 659 | | |
658 | | - | |
| 660 | + | |
659 | 661 | | |
660 | 662 | | |
661 | 663 | | |
| |||
0 commit comments