x/build: 为测试而创建的gccgo构建器,位于$GOROOT/test目录下,

6yoyoihd  于 6个月前  发布在  Go
关注(0)|答案(2)|浏览(47)

$GOROOT/test目录包含用于测试的文件,这些文件也会被gccgo测试,但我们并不经常针对gccgo对其进行测试。这意味着:

  1. @ianlancetaylor需要定期花费大量时间更新gccgo的测试。例如,从2020年11月末到2020年12月中旬,这些CL跨越了大约3周:b94346ed6abf29a45e12f848dff673e796c58768aebacb3076d2b335ce61cccbe10af75a25a3f685a322731bb54
  2. 当更新现有测试时,人们害怕从现有正则表达式中删除模式替代项,因为担心会破坏gccgo。例如,test/fixedbugs/issue11326.go有5个替代项的测试,尽管我们只支持3种类型检查器(gc、gccgo和go/types):
    go/test/fixedbugs/issue11326.go
    第21行至第25行的 1ed0d12
    | | var_=1e646456992// ERROR "1e+646456992 overflows float64|floating-point constant overflow|exponent too large|overflows float64|overflows" |
    | | var_=1e64645699// ERROR "1e+64645699 overflows float64|floating-point constant overflow|exponent too large|overflows float64|overflows" |
    | | var_=1e6464569// ERROR "1e+6464569 overflows float64|floating-point constant overflow|exponent too large|overflows float64|overflows" |
    | | var_=1e646456// ERROR "1e+646456 overflows float64|floating-point constant overflow|exponent too large|overflows float64|overflows" |
    | | var_=1e64645// ERROR "1e+64645 overflows float64|floating-point constant overflow|exponent too large|overflows float64|overflows" |
    此外,第5个替代项“溢出”是第1和第4个替代项的子串,因此它们不再需要包含在内。我认为如果我们有一个构建器(以及slowbot)来以gccgo模式运行$GOROOT/test测试,这两个问题都会得到帮助。
    /cc @ianlancetaylor @golang/release
ybzsozfc

ybzsozfc1#

我支持这个,但我要指出的是,许多测试仍然无法通过gccgo。我已经用尽了自我决定的时间来更新测试套件。

evrscar2

evrscar22#

@ianlancetaylor 啊,我昨晚在重新整理types2预期失败列表时注意到了。(例如,几个固定bug/issue7525*.go仍然在使用gccgo时出现ICE问题。)
我支持将types2预期失败机制扩展到允许gccgo预期失败,并将我们目前拥有的作为基线进行检查。这样我们至少可以阻止进一步的倒退。

相关问题