llvm-ir

    2热度

    1回答

    我是LLVM的新手,理解LLVM的指令生成。作为其中的一部分,我试图转换一个基本的布尔指令来直接使用内存寄存器作为操作数。例如,在下面的IR中,我希望and操作使用%a和%b而不是%11和%12。 %11 = load i32, i32* %a, align 4 \n %12 = load i32, i32* %b, align 4 \n %13 = and i32 %11, %12\ st

    0热度

    1回答

    我得到了一个要求,我有一个c文件,并且我正在生成LLVM IR。从生成的每个指令LLVM IR我计算需要执行多少个周期,现在我的问题是如何追溯到相同的C代码,并显示特定的C代码块(说功能)花了计算数量的周期(我实际上是从生成的LLVM IR代码计算的)。 我有如下交流代码: int arithmeticOperations(int x, int y) { int aa, ab, ac,

    0热度

    2回答

    我想解析LLVM IR文件并相应地执行某些操作,想知道是否有可用于LLVM IR的ANTLR语法,这会使我的工作更简单吗?

    0热度

    2回答

    虽然通过各种关于LLVM和自己的文档的文章阅读,但我已经看到了一些关于其IR的向后兼容性的引用。 很多关于IR的文件中提到,它是不稳定的,可以在几乎任何休息时间。但是,它也经常提到位码IR与给定的特定LLVM版本的文本IR更加向后兼容(正如'经常在更多版本中有效'一样)。 我的理解是字节码 - >位码转换几乎是一个直接映射。了解这一点,为什么/它如何与文本IR不兼容?我似乎无法找到驱动这种行为的实

    2热度

    1回答

    我最近玩过不同的LLVM前端像Clang(C Familiy),LDC2(D),Terra,... 所有这些语言都可以编译到LLVM IR(有点可读)和LLVM IR位码。那么在这个阶段,他们都处于同一个“层面”上吗? 我的问题是:在“语言级别”上有没有像.NET语言或JVM语言那样的语言互操作性的方式,还是只能通过在IR中编辑来实现? 我已经在谷歌搜索了这个问题,但没有找到想找的东西。 如果是我

    3热度

    1回答

    我想为我的玩具编译器设计一个IR(如LLVM IR),我不知道 alloca指令在进一步分析中的用途是什么。在哪些优化alloca信息被使用?

    1热度

    1回答

    我想 提取物起LLVM IR 他们每个人保存到不同的文件(或只是一个字符串对象) 从文件中读取保存的功能(或只是一个字符串对象) 重新使用它的框架 不过,我目前的提取方法仅复制部分信息,我不能事后再建功能。我主要有红外读者抱怨的问题: error: use of undefined type named 'class.std::allocator' ... error: use of unde

    0热度

    1回答

    读取元数据我有一个LLVM IR指令如下:store i32 %i.0, i32* %arrayidx, align 4 !0 注意,我连接元数据!0到指令。而对于我的目的,这代表我已经声明如下元数据字符串: !0 = !{!"hello"} 现在我尝试阅读本使用 if (Inst.getMetadata("hello")) 然而,在执行这个,我得到以下错误: opt: <stdin>:32:43

    0热度

    1回答

    在克隆功能的上下文中,其中一个使用的对象是ValueToValueMapTy &VMap,它是ValueMap<const Value *, WeakVH>的typedef。 例如,正是在cloneFunctionInto(...)在llvm/lib/Transforms/Utils/CloneFunction.cpp 用于因此我有问题,这将帮助我澄清其目的: 是否每个llvm::Value有它的

    3热度

    1回答

    我是LLVM的初学者。 当我经过LLVM的API,我有一个幼稚的问题: 什么是 “兑现” 在LLVM意味着GlobalValue.h 在doxygen的: http://llvm.org/doxygen/classllvm_1_1GlobalValue.html#ac1b5643f40dd3c7b92a548027eb13de0 它说: 错误GlobalValue :: materialize()