编译器
文章平均质量分 91
shijiu2012
这个作者很懒,什么都没留下…
展开
-
llvm/clang编译器添加航天子集区域限制的制导#pragma as-check
一.实现效果输入:添加制导的源程序*.c 输出:打印每个函数对应的是否在制导范围内,如果在制导范围内,对应的规则号 输出格式为 函数名:[0,1,2](1 表示有 as-check 制导 rule1,2 表示有制导 rule2, 0 表示没有)每个函数一行 。例如:示例输入example.c示例输出二.算法流程:1、当 Lexer 认出”#pragma”时调用 ...原创 2019-04-21 17:15:19 · 1056 阅读 · 1 评论 -
用gdb去调试clang
做编译器开发的经常会遇到各种问题,有些问题又不是很容易发现而且网上关于gdb调试clang的文章很少,下面简单介绍一下用gdb调试clang供大家学习。1.首先输入gdb进入调试模式2.打开要调试的clang可执行文件,通过file命令:等待一会儿将会显示Reading symbols from ~/llvm3.8/bin/clang...done字样3.设定调...原创 2019-04-21 17:53:57 · 5132 阅读 · 0 评论 -
利用llvm 源码提供的API,获取IR中函数调用实际参数的名字并打印
在LLVM Pass开发中,由于需要我们可能需要获取IR中函数调用的的实际参数名字,在C语言中函数调用是这样的func1("hello",3),如果在编译器的前端clang中我们想要获取第一个参数"hello",还是比较容易的,但是在当程序被转成IR就类似这样了:@.str = private unnamed_addr constant [6 x i8] c"hello\00", align...原创 2019-05-21 16:06:04 · 2691 阅读 · 2 评论