diff options
Diffstat (limited to 'test/inline.go')
-rw-r--r-- | test/inline.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/inline.go b/test/inline.go index 8ebffedfb7..0b3ad55d46 100644 --- a/test/inline.go +++ b/test/inline.go @@ -180,3 +180,21 @@ func (T) meth2(int, int) { // not inlineable - has 2 calls. runtime.GC() runtime.GC() } + +// Issue #29737 - make sure we can do inlining for a chain of recursive functions +func ee() { // ERROR "can inline ee" + ff(100) // ERROR "inlining call to ff" "inlining call to gg" "inlining call to hh" +} + +func ff(x int) { // ERROR "can inline ff" + if x < 0 { + return + } + gg(x - 1) +} +func gg(x int) { // ERROR "can inline gg" + hh(x - 1) +} +func hh(x int) { // ERROR "can inline hh" + ff(x - 1) // ERROR "inlining call to ff" // ERROR "inlining call to gg" +} |