GCC中FAIL项的分析与修复

文章介绍了GCC编译器在测试过程中FAIL项的来源、查找方法以及分析和修复过程。FAIL项主要来源于编译错误或未通过的测试用例,通过运行makecheck命令进行回归测试,并查看gcc.sum和gcc.log文件来定位问题。分析FAIL项涉及理解测试源文件功能、复现问题并寻找问题原因,最后通过对比和调试修复问题。文章提供了GCC测试套件的相关资源和文档链接作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         通过本次的梳理,可以了解GCC中到底在测试什么样的功能,当添加或者修改代码时,如何验证是否通过,提供了一种直接的参考思路。本次GCC中的FAIL项的分析是基于多个FAIL项的成功修复基础上的总结,提供了一种分析思路,可能有一些地方写的不是那么完整,有问题可以一起讨论。

一、FAIL项的来源

1、什么是FAIL项

        GCC是GNU编译器套件中的一个开源编译器,它包含了C、C++、Objective-C、Fortran、Ada等多种语言的编译器。在GCC的编译过程中,会有一些FAIL项出现,表示编译过程中出现了错误或者未通过的测试用例。其中测试用例就是验证编译器所具有的功能,当我们在构建目录后,需要经过编译、回归测试、安装等步骤,经过回归测试(make check)就可以检查当前编译器的测试情况。

2、FAIL项的查找

2.1测试套件 testsuite的介绍

        GCC 中的测试套件 TestSuite 是一组用于对 GCC 编译器进行测试的测试程序集合。这些测试程序用于检测编译器的功能、正确性和性能,并可以用于验证 GCC 是否符合规范并且能够处理各种语言和代码类型。

        TestSuite 包含了大量的测试代码,包括 C 语言、C++、Fortran 等多种语言的程序,以及针对编译器前端和后端、库函数、链接器等不同部分的测试。测试套件由自动化工具管理,可以为不同平台生成测试结果报告,以提高测试效率和准确性。

        在构建目录后,回归测试主要是使用源码$(source)/gcc/testsuite/目录下的文件,包含各种语言的测试,如下

        如上图,标记出来的目录是和目标架构相关的测试用例,包含 aarch64、 i386、 loongarch、alpha、 mips等各种架构的代码。其他的一些测试目录就是和架构无关,如 g++.dg,gdc.test, go.dg等。

2.2 FAIL项查找

 (1)回归测试(make check)

         此命令会测试所有的测试用例,结果都会保存在$(build)/gcc/testsuite/*/目录下的日志文件,如C语言对应的日志文件gcc.sum和gcc.log。其中gcc.sum会总结每一个文件执行后的结果,gcc.log会保存详细的执行结果,包括测试命令等。这是一个整体的测试方法,为了更加方便的测试,GCC也提供了单个文件的测试,以Loongarch架构上通用的 fp-ftint.c为例说明,命令如下

make check-gcc RUNTESTFLAGS="loongarch.exp=fp-ftint.c"

        此测试用例(fp-ftint.cÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值