LLVM每日谈之十 LLVM Test简介

作者:snsn1984

就像很多优秀的软件都有自己的测试框架一样,LLVM也有自己的测试框架。LLVM的测试主要分为两

部分:regression tests 和 whole programs。其中,regression tests主要位于LLVM源码/test目录下,主要是
用来测试LLVM的一些特性或者是用来测试一些bug的。我们在平时的工作中,一般使用的就是这个类型的test。
whole programs这个类型的测试,不在LLVM的源码中,在SVN库上有自己的单独目录,一般称之为test-suit,
它的测试范围要广的多,因为我们目前这里不涉及,所以这里不做过多介绍。
        运行regression tests的方法比较简单,但是必须有已经编译好的LLVM源码。在build目录下,运行make check,
这样就可以运行所有的LLVM源码/test目录下的regression tests。如果已经编译好的LLVM源码下还包含了Clang,也
就是说在编译LLVM之前,已经将Clang的远方放置到LLVM源码/tools目录下了,那么在编译成功之后,就可以使用
make check-all,这样可以运行LLVM和Clang的所有的regression tests。
        如果需要运行单个的测试用例,可以使用llvm-lit工具。直接使用llvm-lit工具,后面跟上测试用例的位置和名字,

就可以单独运行这个测试。或者在llvm-lit后面跟上一个测试目录,llvm-lit可以运行这个目录下的所有测试用例。

如果在运行llvm-lit的三个时候碰到了bash: ./llvm-lit: Permission denied 这个错误,那么可以使用$>chmod +x llvm-lit命令。

LLVM官方介绍测试的文档:http://llvm.org/docs/TestingGuide.html

LLVM官方介绍lit的文档:http://llvm.org/docs/CommandGuide/lit.html

---------------------------------------------------转载请注明出处----------------------------------------------------------------------------

时间: 2024-09-20 06:39:45

LLVM每日谈之十 LLVM Test简介的相关文章

LLVM每日谈之二 LLVM IR

作者:snsn1984 在介绍LLVM IR之前,我们需要先了解下LLVM的结构.传统的静态编译器分为三个阶段:前端.优化和后端. LLVM的三阶段设计是这样的: 这样做的优点是如果需要支持一种新的编程语言,那么我们只需要实现一种新的前端.如果我们需要支持一种新的硬件设备,那我们只需要实现一个新的后端.而优化阶段因为是针对了统一的LLVM IR,所以它是一个通用的阶段,不论是支持新的编程语言,还是支持新的硬件设备,这里都不需要对优化阶段做修改.所以从这里可以看出LLVM IR的作用. LLVM

LLVM每日谈之十六 LLVM的学习感悟

这些总结并非我自己写的,而是摘自LLVM的版本比较老的文档中.因为老版本的文档已经鲜有人关注了,而这篇总结的非常好,到现在也很有用处,所以就把这部分内容贴出来了.这只是原文档的一部分. 原文档地址:http://llvm.org/releases/1.1/docs/Stacker.html 正文内容: Lessons I Learned About LLVM Everything's a Value! Although I knew that LLVM uses a Single Static

LLVM每日谈之十九 LLVM的第一本系统的书<Getting Started with LLVM Core Libraries>

作者:史宁宁(snsn1984) LLVM终于有了一本系统的书了--<Getting Started with LLVM Core Libraries>.这本书号称是LLVM的第一本书,但是据说日本早就有两本日文的关于LLVM的书,这个了解的不多.不过可以肯定的是,这本书是英文表述的第一本书. 这本书的覆盖范围很广,从简单的如何安装LLVM一直到各个部分的介绍,以及如何使用这些部分去创建自己的工具,都有所介绍.对于想使用LLVM去创建自己的工具的人,完全是够用的,而且是非常不错的一本书.这也是

LLVM每日谈之十四 如何给Clang添加一个属性

每次内容主要出自文档: "Clang" CFE Internals Manual 地址: http://clang.llvm.org/docs/InternalsManual.html 在这个文档中,以简明的的一个例子说明了如何按照这个方式在Clang中添加一个属性.讲的很清楚,我在这里不再累述,只是将例子中的部分代码和文档结合起来,一起展现给大家. How to add an attribute¶ To add an attribute, you'll have to add it

LLVM每日谈之十八 GEP Instruction的几点总结

In summary, here's some things to always remember about the GetElementPtr instruction: The GEP instruction never accesses memory, it only provides pointer computations. The first operand to the GEP instruction is always a pointer and it must be index

LLVM每日谈之十五 LLVM自带的examples

 作者:snsn1984            在LLVM源码的目录下,有一个目录叫做examples,这个目录下边有几个LLVM的例子,初学者一般不会太关注这些例子,但是这些例子确实是精华中的精华,在LLVM的学习过程中不可避免的要对这些例子所涉及内容要精通.所以希望大家一定要对这些例子重视起来,它们都是经典中的经典.从我个人而言,从这些例子中学到了很多,文档说了很多都没能让人明白的东西,在这里,一个简单的例子就讲的很清楚了.         首先,要想执行这些例子,可以在cmake的时候加上

LLVM每日谈之十七 LLVM/Clang的学习的思考

        之前一直关注LLVM和基于LLVM的工程(工具)多一些,对Clang和基于Clang的工具关注不是很多.这就导致了一个很严重的问题,觉的如果要深入理解Clang就必须要去读Clang的源码,这个想法不是不对,但是这不是唯一的路,而且Clang的源码太多,容易让人无法坚持下去,也容易让人无从下手.         了解了Clang的一些工具之后,觉的这些工具是一个很好的切入点,简单.方便使用.代码量不大,却可以完成很多以前觉的是很难实现的工作.这让我觉的找到了可以深入学习Clang

LLVM每日谈之四 Pass初探

作者:snsn1984 LLVM 的Pass框架是LLVM系统的一个很重要的部分.每个Pass都是做优化或者转变的工作,LLVM的优化和转换工作就是由很多个Pass来一起完成的. 所以按照我的理解,Pass就是LLVM系统转化和优化的工作的一个节点,每个节点做一些工作,这些工作加起来就构成了LLVM整个系统的优化和转化.Pass架构这么做的话,可重用性非常好,你可以选择已有的一些Pass,自己去构建出自己想要的优化和转化效果.并且自己也可以重新写Pass去做自己想要的优化和转变,因为每个Pass

LLVM每日谈之七 Clang

作者:snsn1984         官方介绍Clang是LLVM native的一个面向C/C++/Objective-C的编译器,目标是要提供一个编译非常快的编译器.他们宣称在Debug模式下编译Objective-C比GCC快3倍.至于是否能比GCC快这么多,总有人去做对比,大家可以搜索下,好像确实快了些. Clang一般被说是LLVM的一个前端.关于前端的定义,大家可以从LLVM每日谈之二里面看到前端在整个LLVM体系中的位置.Clang当初的定位就是要做下一个十年中一个伟大的前端,这