面向编译器组件的生成式测试方法研究

来源 :大连理工大学 | 被引量 : 0次 | 上传用户:sunna2005
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
编译器作为重要的系统软件,是构建其他软件的核心基础设施之一。典型的编译器可被分为前端、中端、以及后端三个组件,分别完成高级语言处理、代码优化、以及目标代码生成的功能。然而,编译器作为一类软件,同样不可避免会出现缺陷。这些缺陷不仅降低了编译器自身的可靠性,也给被编译的软件带来一定的风险,甚至造成灾难。因此,保证编译器的质量是一项至关重要的任务。编译器测试是保证编译器质量的重要方法之一,其通过生成复杂的测试程序来检测编译器缺陷。近些年,在编译器测试领域虽然已有很多测试程序生成技术被提出,但是这些技术仍然不能很好地生成组件特定且多样化的测试程序。如何生成触发编译器缺陷的测试程序在编译器测试中仍然是亟待解决的关键问题。因此,针对编译器的不同组件,本文尝试从测试程序生成的角度研究生成式测试方法,从而更好地保证编译器的质量。本文的研究工作主要包含三个方面内容,分别是编译器前端警告测试、编译器前端错误恢复测试、以及编译器中后端正确性测试。首先,为了能高效地发现编译器前端警告缺陷,本文提出了一种基于多样性引导的编译器前端警告测试方法。其次,为了确保编译器前端错误恢复机制的正确性,本文提出了一种基于遗传算法的编译器前端错误恢复测试方法。最后,为了保证编译器优化与翻译的正确性,本文提出了一种基于深度学习的编译器中后端正确性测试方法。具体来说,本文的主要研究内容如下:(1)基于多样性引导的编译器前端警告测试方法。通过分析编译器警告机制的特点,该方法解决警告测试中的两个挑战:警告敏感结构构造和多样化的测试程序生成。为了解决这两个挑战,本文首先设计了63个变异算子对种子程序的抽象语法树进行变异,从而构造警告敏感结构;然后采用马尔可夫蒙特卡洛方法来引导每个变异算子的选择,从而生成多样化的测试程序。在GCC和LLVM编译器上的实验结果表明,相较于现有领先方法,该方法能有效提升18.93%~76.74%的警告缺陷检测效率,并在实践中检测到编译器开发版本前端存在的8个真实警告缺陷。(2)基于遗传算法的编译器前端错误恢复测试方法。为了检测编译器前端错误恢复的缺陷,该方法主要解决编译器前端错误恢复测试中的两个挑战:多样化测试程序构造和错误恢复缺陷检测。为了解决第一个挑战,本文针对语法有效的种子程序设计了129个变异算子,然后采用遗传算法对不同变异算子进行组合,从而生成多样化的测试程序。为了解决第二个挑战,本文基于差分测试提出了一种编译器前端错误恢复诊断对齐算法。在GCC和LLVM编译器上的实验结果表明,该方法比已有方法能够有效地提升19.08%~43.08%的编译器错误恢复缺陷检测效率,并在实践中检测到编译器开发版本前端存在的9个真实错误恢复缺陷。(3)基于深度学习的编译器中后端正确性测试方法。为了提高编译器中后端测试的效率,该方法解决编译器中后端测试中存在的两个挑战:有效且多样化的测试程序构造。首先,为了构造有效的测试程序,本文基于Transformer-XL神经网络模型提出一种高效的测试程序构造方法。其次,为了构造多样化的测试程序,本文提出一种基于历史概率的采样策略,从而保证测试程序生成的多样化。在GCC和LLVM编译器上进行实验,相较于现有领先方法,该方法能显著提高35.29%~187.50%的编译器中后端测试效率,并在实践中检测到编译器开发版本的中后端存在的22个正确性缺陷。本文针对编译器前端、中后端不同组件提出了三种有效的缺陷检测方法,并在实践中取得了较好的效果,有助于开发者更好地检测编译器不同组件的缺陷,进一步提高编译器的可靠性。
其他文献
有限元方法是在当今科学与工程计算中广泛应用的数值方法.比例边界有限元方法(SBFEM)是一种以有限元方法为基础的半离散半解析的数值方法,它结合了有限元方法和边界元方法的优点,同时又保持自身的特点.不同于传统的有限元方法,在比例边界有限元方法的推导和求解过程中,控制方程(二阶偏微分方程)被转换为一个二阶常微分方程组.通过假设通解为一些幂函数的线性组合,齐次二阶常微分方程组(无体力项)的求解可转化为计
学位
随着材料科学与工业技术的快速发展,航空航天、家用电器、医疗器械、汽车、建筑等各领域对高性能新材料的需求与日俱增。于此同时也给新材料与结构的尖端制造和安全评估所需的固体力学模拟带来更严峻的挑战。固体力学模拟离不开材料的本构模型,准确地建立新材料的本构模型,提出数值实现方法,是解决挑战的关键一环。然而,传统本构模型的建立需要很高的智力和时间成本,如著名的Neo-Hookean、Ogden、Hill、D
学位
现代尖端工业装备的设计和分析过程离不开固体力学模拟,而固体力学模拟又离不开材料的本构模型。随着材料科学的发展,大量性能优异的新材料出现。但若没有描述这些新材料的本构模型,则很难将这些材料充分应用到尖端工业装备的制造中。传统材料本构模型的建立往往需要花费很长时间;即使采用已有本构模型来描述部分新材料的力学行为,从现有本构模型中选出恰当的模型也并不容易。这些困难制约了新材料在尖端工业装备中的应用,也限
学位
动网格技术对计算流体力学具有重要的意义,如机翼颤振、多体分离、流固耦合等许多带有运动边界的非定常流动问题都需要用到动网格技术。动网格技术主要包括网格变形、网格重构以及网格变形和网格重构相结合等方法。只采用网格变形方法不能解决所有的问题,在实际应用中经常需要与网格重构相结合,但网格重构会改变原有网格的拓扑,导致新旧网格之间的流场信息传递出现额外误差,降低计算的精度。因此需要在保证网格质量的前提下尽可
学位
微小RNA(microRNA,miRNA)和长非编码RNA(long non-coding RNA,lncRNA)在调控内源基因表达、转录翻译后修饰、表观遗传等方面发挥着重要的作用。miRNA和lncRNA还能够相互作用影响各种生命活动,因此越发受到关注。分子生物学实验能够鉴定miRNA与lncRNA互作关系,但其周期长且费用高。计算方法可以预测潜在的互作关系,为分子生物学实验筛选出有价值的数据,
学位
在自然语言处理领域,无论词义消歧还是句法分析,都是非常重要的基础部分,在信息检索、机器翻译、文本理解、智能对话等都有着广泛应用。现有的词义消歧和句法分析研究,大多数是在词形信息上直接进行匹配计算。这种方式虽然准确性较高,但是泛化能力不足,容易导致数据稀疏问题,影响了系统性能的提高。本文利用语义词典中一个语义分类编码(简称语义码)可代表多个词义相近的词这种特性,先将词转化为词的语义码,然后使用语义码
学位
轻量化是实现汽车节能减排的有效措施之一。与普通钢材相比,高强度铝合金具有密度低、比强度高、易回收利用等优点,是替换普通钢材制造抗冲撞结构件的理想轻量化材料之一。随着温热成形技术的发展,高强度铝合金常温成形性差的问题得到了有效改善,极大地拓展了其在汽车轻量化领域的应用范围。高温成形性是制定铝合金温热成形工艺的主要依据。7075铝合金是高强度7000系铝合金的典型代表,在汽车制造领域受到了较多关注,对
学位
无线网络和物联网技术的发展给智能应用带来了更丰富的可能,对于移动设备和用户来说,位置始终是一个重要的信息,广泛应用在导航、安防、推荐等领域中。随着对新场景新应用的不断开发,对于位置的获取方式和新的需求也更加多样化。无线网络定位可以选用异构无线信号作为介质,从实现方式上可以分为:物理层的有源定位、无源定位和非测距范围定位等。本文针对不同覆盖尺度下对不同目标的定位需求,充分挖掘物理层接收信号强度(Re
学位
遥感技术采用远距离非接触的方式,收集地物目标的电磁辐射信息,拓宽人类感知地表的视野范围,已广泛应用于气象观测、资源勘察、城市规划等实际任务中。遥感图像是指记录各种地物电磁信号的图像,包含目标区域的丰富具象信息,直观反映地物分布现状及地物间相互关系。随着终端探测设备和远程传输技术的高速发展,光学遥感图像数量快速增长,空间分辨率不断提升,地物数据逐渐复杂。因此,如何自动解析信息量庞大的光学遥感图像具有
学位
严峻的环境挑战和能源危机使发展燃料电池汽车技术上升到了国家能源战略层面。燃料电池汽车的电源一般由燃料电池和动力电池组成,整车能量流管理策略(Energy Management Strategy,EMS)是燃料电池汽车的关键技术之一,对减缓双电源寿命衰减和降低整车氢耗起到重要的作用。燃料电池老化会导致系统效率的变化,动力电池老化则会导致容量减少和内阻增加,若不及时识别双电源的老化状态并改变相应的EM
学位