Compilers are one of the most fundamental software and almost all of software are based on them. Therefore, the reliability of compilers is very important. Compiler testing is an effective way of guaranteeing the quality of compilers. Currently, there are three mainstream compiler testing techniques: Randomized Differential Testing, Equivalence Modulo Inputs and Different Optimization Levels. However, there are no studies demonstrating which compiler testing technique is better. In our project, we design empirical study to compare the three compiler testing techniques, and to explore the influence of many factors on compiler testing. Based on this empirical study, we will propose two new compiler testing techniques to complement the existing testing techniques. The two techniques are based on search algorithms and test inputs, respectively. Furthermore, compiler testing has the serious efficiency issue, thus in this project we will propose two accelerating approaches to accelerating compiler testing. The two approaches are based on text-vector and machine learning, respectively.
编译器是最基础的软件之一,几乎所有的软件都以其为基础,因此,编译器的可靠性是至关重要的。编译器测试是保证编译器质量的一种有效手段,并且目前有三种主流的编译器测试技术:随机差异测试,等价取模测试,和优化选项测试。然而,目前并没有研究能够证明哪种编译器测试技术更好,并且也没有研究去探索影响编译器的因素有哪些。在本项目中,我们将设计精密的实验,来比较这三种编译器测试技术,并且探索与编译器测试相关的因素的影响。基于实验探究结果,我们提出两种与已有编译器测试技术具有补充作用的新的测试技术:基于搜索的编译器测试技术和基于测试程序输入的编译器测试技术。除此之外,由于编译器测试有着严重的效率问题,因此,我们针对加速编译器测试,提出了两种有效的加速技术:基于文本向量的编译器测试加速技术和基于机器学习的编译器测试加速技术。
编译器是最基础的软件之一,几乎所有的软件都以其为基础,因此,编译器的可靠性是至关重要的。编译器测试是保证编译器可靠性的一种有效手段,编译器测试效率是编译器测试面临的核心问题,提升编译器测试效率的主要手段包含两个方面:1)尽可能生成揭错能力强的测试用例;2)尽可能优化编译器测试用例的执行。本项目已当前通用的随机编译器测试工具CSmith为基础,探索通过调控CSmith的配置来生成揭错能力更强的测试用例集,提出了自己的编译器测试用例生成,可显著提升编译器测试用例集的揭错能力。针对编译器测试加速,本项目探索依据前阶段测试的结果动态调整编译器测试用例执行的顺序,可显著提升编译器测试的效率。此外,编译器是一种特殊的复杂软件,编译器错误的修复通常非常耗时,本项目也针对编译器错误的修复开展研究,也取得了不错的进展。
{{i.achievement_title}}
数据更新时间:2023-05-31
F_q上一类周期为2p~2的四元广义分圆序列的线性复杂度
平行图像:图像生成的一个新型理论框架
零样本学习综述
北京市大兴区夏季大气中醛酮类化合物的污染水平、来源及影响
顾及功能语义特征的建筑物空间分布模式识别方法
二级编译程序的自动生成与基于知识的编译程序测试系统
程序测试调度与故障诊断
微处理器高层功能验证测试程序自动生成的理论与方法
基于占优度与集合进化的并行程序变异测试数据自动生成