From 8ce74b7d119a74c5882ae88556991f59267cb947 Mon Sep 17 00:00:00 2001 From: Giovanni Bajo Date: Sat, 3 Mar 2018 19:16:34 +0100 Subject: [PATCH] test: port a nil-check interface test from asm_test Change-Id: I69c1688506d1aeca655047acf35d1bff966fc01e Reviewed-on: https://go-review.googlesource.com/98442 Run-TryBot: Giovanni Bajo TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/asm_test.go | 531 ----------------------- test/codegen/issue22703.go | 535 ++++++++++++++++++++++++ 2 files changed, 535 insertions(+), 531 deletions(-) create mode 100644 test/codegen/issue22703.go diff --git a/src/cmd/compile/internal/gc/asm_test.go b/src/cmd/compile/internal/gc/asm_test.go index 8ed0ca7517..0919eab307 100644 --- a/src/cmd/compile/internal/gc/asm_test.go +++ b/src/cmd/compile/internal/gc/asm_test.go @@ -1293,537 +1293,6 @@ var linuxAMD64Tests = []*asmTest{ `, neg: []string{"memmove"}, }, - // Nil checks before calling interface methods - { - fn: ` - type I interface { - foo000() - foo001() - foo002() - foo003() - foo004() - foo005() - foo006() - foo007() - foo008() - foo009() - foo010() - foo011() - foo012() - foo013() - foo014() - foo015() - foo016() - foo017() - foo018() - foo019() - foo020() - foo021() - foo022() - foo023() - foo024() - foo025() - foo026() - foo027() - foo028() - foo029() - foo030() - foo031() - foo032() - foo033() - foo034() - foo035() - foo036() - foo037() - foo038() - foo039() - foo040() - foo041() - foo042() - foo043() - foo044() - foo045() - foo046() - foo047() - foo048() - foo049() - foo050() - foo051() - foo052() - foo053() - foo054() - foo055() - foo056() - foo057() - foo058() - foo059() - foo060() - foo061() - foo062() - foo063() - foo064() - foo065() - foo066() - foo067() - foo068() - foo069() - foo070() - foo071() - foo072() - foo073() - foo074() - foo075() - foo076() - foo077() - foo078() - foo079() - foo080() - foo081() - foo082() - foo083() - foo084() - foo085() - foo086() - foo087() - foo088() - foo089() - foo090() - foo091() - foo092() - foo093() - foo094() - foo095() - foo096() - foo097() - foo098() - foo099() - foo100() - foo101() - foo102() - foo103() - foo104() - foo105() - foo106() - foo107() - foo108() - foo109() - foo110() - foo111() - foo112() - foo113() - foo114() - foo115() - foo116() - foo117() - foo118() - foo119() - foo120() - foo121() - foo122() - foo123() - foo124() - foo125() - foo126() - foo127() - foo128() - foo129() - foo130() - foo131() - foo132() - foo133() - foo134() - foo135() - foo136() - foo137() - foo138() - foo139() - foo140() - foo141() - foo142() - foo143() - foo144() - foo145() - foo146() - foo147() - foo148() - foo149() - foo150() - foo151() - foo152() - foo153() - foo154() - foo155() - foo156() - foo157() - foo158() - foo159() - foo160() - foo161() - foo162() - foo163() - foo164() - foo165() - foo166() - foo167() - foo168() - foo169() - foo170() - foo171() - foo172() - foo173() - foo174() - foo175() - foo176() - foo177() - foo178() - foo179() - foo180() - foo181() - foo182() - foo183() - foo184() - foo185() - foo186() - foo187() - foo188() - foo189() - foo190() - foo191() - foo192() - foo193() - foo194() - foo195() - foo196() - foo197() - foo198() - foo199() - foo200() - foo201() - foo202() - foo203() - foo204() - foo205() - foo206() - foo207() - foo208() - foo209() - foo210() - foo211() - foo212() - foo213() - foo214() - foo215() - foo216() - foo217() - foo218() - foo219() - foo220() - foo221() - foo222() - foo223() - foo224() - foo225() - foo226() - foo227() - foo228() - foo229() - foo230() - foo231() - foo232() - foo233() - foo234() - foo235() - foo236() - foo237() - foo238() - foo239() - foo240() - foo241() - foo242() - foo243() - foo244() - foo245() - foo246() - foo247() - foo248() - foo249() - foo250() - foo251() - foo252() - foo253() - foo254() - foo255() - foo256() - foo257() - foo258() - foo259() - foo260() - foo261() - foo262() - foo263() - foo264() - foo265() - foo266() - foo267() - foo268() - foo269() - foo270() - foo271() - foo272() - foo273() - foo274() - foo275() - foo276() - foo277() - foo278() - foo279() - foo280() - foo281() - foo282() - foo283() - foo284() - foo285() - foo286() - foo287() - foo288() - foo289() - foo290() - foo291() - foo292() - foo293() - foo294() - foo295() - foo296() - foo297() - foo298() - foo299() - foo300() - foo301() - foo302() - foo303() - foo304() - foo305() - foo306() - foo307() - foo308() - foo309() - foo310() - foo311() - foo312() - foo313() - foo314() - foo315() - foo316() - foo317() - foo318() - foo319() - foo320() - foo321() - foo322() - foo323() - foo324() - foo325() - foo326() - foo327() - foo328() - foo329() - foo330() - foo331() - foo332() - foo333() - foo334() - foo335() - foo336() - foo337() - foo338() - foo339() - foo340() - foo341() - foo342() - foo343() - foo344() - foo345() - foo346() - foo347() - foo348() - foo349() - foo350() - foo351() - foo352() - foo353() - foo354() - foo355() - foo356() - foo357() - foo358() - foo359() - foo360() - foo361() - foo362() - foo363() - foo364() - foo365() - foo366() - foo367() - foo368() - foo369() - foo370() - foo371() - foo372() - foo373() - foo374() - foo375() - foo376() - foo377() - foo378() - foo379() - foo380() - foo381() - foo382() - foo383() - foo384() - foo385() - foo386() - foo387() - foo388() - foo389() - foo390() - foo391() - foo392() - foo393() - foo394() - foo395() - foo396() - foo397() - foo398() - foo399() - foo400() - foo401() - foo402() - foo403() - foo404() - foo405() - foo406() - foo407() - foo408() - foo409() - foo410() - foo411() - foo412() - foo413() - foo414() - foo415() - foo416() - foo417() - foo418() - foo419() - foo420() - foo421() - foo422() - foo423() - foo424() - foo425() - foo426() - foo427() - foo428() - foo429() - foo430() - foo431() - foo432() - foo433() - foo434() - foo435() - foo436() - foo437() - foo438() - foo439() - foo440() - foo441() - foo442() - foo443() - foo444() - foo445() - foo446() - foo447() - foo448() - foo449() - foo450() - foo451() - foo452() - foo453() - foo454() - foo455() - foo456() - foo457() - foo458() - foo459() - foo460() - foo461() - foo462() - foo463() - foo464() - foo465() - foo466() - foo467() - foo468() - foo469() - foo470() - foo471() - foo472() - foo473() - foo474() - foo475() - foo476() - foo477() - foo478() - foo479() - foo480() - foo481() - foo482() - foo483() - foo484() - foo485() - foo486() - foo487() - foo488() - foo489() - foo490() - foo491() - foo492() - foo493() - foo494() - foo495() - foo496() - foo497() - foo498() - foo499() - foo500() - foo501() - foo502() - foo503() - foo504() - foo505() - foo506() - foo507() - foo508() - foo509() - foo510() - foo511() - } - func $(i I) { - i.foo511() - } - `, - pos: []string{"TESTB"}, - }, - { - fn: ` - func $(i I) { - i.foo001() - } - `, - neg: []string{"TESTB"}, - }, { fn: ` func $(p int, q *int) bool { diff --git a/test/codegen/issue22703.go b/test/codegen/issue22703.go new file mode 100644 index 0000000000..0201de6530 --- /dev/null +++ b/test/codegen/issue22703.go @@ -0,0 +1,535 @@ +// asmcheck + +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package codegen + +type I interface { + foo000() + foo001() + foo002() + foo003() + foo004() + foo005() + foo006() + foo007() + foo008() + foo009() + foo010() + foo011() + foo012() + foo013() + foo014() + foo015() + foo016() + foo017() + foo018() + foo019() + foo020() + foo021() + foo022() + foo023() + foo024() + foo025() + foo026() + foo027() + foo028() + foo029() + foo030() + foo031() + foo032() + foo033() + foo034() + foo035() + foo036() + foo037() + foo038() + foo039() + foo040() + foo041() + foo042() + foo043() + foo044() + foo045() + foo046() + foo047() + foo048() + foo049() + foo050() + foo051() + foo052() + foo053() + foo054() + foo055() + foo056() + foo057() + foo058() + foo059() + foo060() + foo061() + foo062() + foo063() + foo064() + foo065() + foo066() + foo067() + foo068() + foo069() + foo070() + foo071() + foo072() + foo073() + foo074() + foo075() + foo076() + foo077() + foo078() + foo079() + foo080() + foo081() + foo082() + foo083() + foo084() + foo085() + foo086() + foo087() + foo088() + foo089() + foo090() + foo091() + foo092() + foo093() + foo094() + foo095() + foo096() + foo097() + foo098() + foo099() + foo100() + foo101() + foo102() + foo103() + foo104() + foo105() + foo106() + foo107() + foo108() + foo109() + foo110() + foo111() + foo112() + foo113() + foo114() + foo115() + foo116() + foo117() + foo118() + foo119() + foo120() + foo121() + foo122() + foo123() + foo124() + foo125() + foo126() + foo127() + foo128() + foo129() + foo130() + foo131() + foo132() + foo133() + foo134() + foo135() + foo136() + foo137() + foo138() + foo139() + foo140() + foo141() + foo142() + foo143() + foo144() + foo145() + foo146() + foo147() + foo148() + foo149() + foo150() + foo151() + foo152() + foo153() + foo154() + foo155() + foo156() + foo157() + foo158() + foo159() + foo160() + foo161() + foo162() + foo163() + foo164() + foo165() + foo166() + foo167() + foo168() + foo169() + foo170() + foo171() + foo172() + foo173() + foo174() + foo175() + foo176() + foo177() + foo178() + foo179() + foo180() + foo181() + foo182() + foo183() + foo184() + foo185() + foo186() + foo187() + foo188() + foo189() + foo190() + foo191() + foo192() + foo193() + foo194() + foo195() + foo196() + foo197() + foo198() + foo199() + foo200() + foo201() + foo202() + foo203() + foo204() + foo205() + foo206() + foo207() + foo208() + foo209() + foo210() + foo211() + foo212() + foo213() + foo214() + foo215() + foo216() + foo217() + foo218() + foo219() + foo220() + foo221() + foo222() + foo223() + foo224() + foo225() + foo226() + foo227() + foo228() + foo229() + foo230() + foo231() + foo232() + foo233() + foo234() + foo235() + foo236() + foo237() + foo238() + foo239() + foo240() + foo241() + foo242() + foo243() + foo244() + foo245() + foo246() + foo247() + foo248() + foo249() + foo250() + foo251() + foo252() + foo253() + foo254() + foo255() + foo256() + foo257() + foo258() + foo259() + foo260() + foo261() + foo262() + foo263() + foo264() + foo265() + foo266() + foo267() + foo268() + foo269() + foo270() + foo271() + foo272() + foo273() + foo274() + foo275() + foo276() + foo277() + foo278() + foo279() + foo280() + foo281() + foo282() + foo283() + foo284() + foo285() + foo286() + foo287() + foo288() + foo289() + foo290() + foo291() + foo292() + foo293() + foo294() + foo295() + foo296() + foo297() + foo298() + foo299() + foo300() + foo301() + foo302() + foo303() + foo304() + foo305() + foo306() + foo307() + foo308() + foo309() + foo310() + foo311() + foo312() + foo313() + foo314() + foo315() + foo316() + foo317() + foo318() + foo319() + foo320() + foo321() + foo322() + foo323() + foo324() + foo325() + foo326() + foo327() + foo328() + foo329() + foo330() + foo331() + foo332() + foo333() + foo334() + foo335() + foo336() + foo337() + foo338() + foo339() + foo340() + foo341() + foo342() + foo343() + foo344() + foo345() + foo346() + foo347() + foo348() + foo349() + foo350() + foo351() + foo352() + foo353() + foo354() + foo355() + foo356() + foo357() + foo358() + foo359() + foo360() + foo361() + foo362() + foo363() + foo364() + foo365() + foo366() + foo367() + foo368() + foo369() + foo370() + foo371() + foo372() + foo373() + foo374() + foo375() + foo376() + foo377() + foo378() + foo379() + foo380() + foo381() + foo382() + foo383() + foo384() + foo385() + foo386() + foo387() + foo388() + foo389() + foo390() + foo391() + foo392() + foo393() + foo394() + foo395() + foo396() + foo397() + foo398() + foo399() + foo400() + foo401() + foo402() + foo403() + foo404() + foo405() + foo406() + foo407() + foo408() + foo409() + foo410() + foo411() + foo412() + foo413() + foo414() + foo415() + foo416() + foo417() + foo418() + foo419() + foo420() + foo421() + foo422() + foo423() + foo424() + foo425() + foo426() + foo427() + foo428() + foo429() + foo430() + foo431() + foo432() + foo433() + foo434() + foo435() + foo436() + foo437() + foo438() + foo439() + foo440() + foo441() + foo442() + foo443() + foo444() + foo445() + foo446() + foo447() + foo448() + foo449() + foo450() + foo451() + foo452() + foo453() + foo454() + foo455() + foo456() + foo457() + foo458() + foo459() + foo460() + foo461() + foo462() + foo463() + foo464() + foo465() + foo466() + foo467() + foo468() + foo469() + foo470() + foo471() + foo472() + foo473() + foo474() + foo475() + foo476() + foo477() + foo478() + foo479() + foo480() + foo481() + foo482() + foo483() + foo484() + foo485() + foo486() + foo487() + foo488() + foo489() + foo490() + foo491() + foo492() + foo493() + foo494() + foo495() + foo496() + foo497() + foo498() + foo499() + foo500() + foo501() + foo502() + foo503() + foo504() + foo505() + foo506() + foo507() + foo508() + foo509() + foo510() + foo511() +} + +// Nil checks before calling interface methods. +// We need it only when the offset is large. + +func callMethodSmallOffset(i I) { + // amd64:-"TESTB" + i.foo001() +} + +func callMethodLargeOffset(i I) { + // amd64:"TESTB" + i.foo511() +} -- 2.50.0