llvm-ir

    0热度

    1回答

    在llvm中,我们可以使用clang插件(如printfunctionames)找到所有类的构造函数或memeber函数。我们可以做同样的事情吗,即找到来自llvm pass的所有类的构造函数和memeber函数?即简而言之,我们可以从bitcode中找到构造函数和memeber函数吗? 打印功能名称在clang源代码中可用。它将cpp文件作为输入并提供所有函数名称。我有点从bitcode文件中做

    0热度

    1回答

    我工作的LLVM后端为一个新的架构,我们需要有位置无关的可执行文件。我可以在clang命令行上传递'-fPIE',但是我没有看到LLVM IR中显示的任何迹象。例如,如果我运行: clang -v -emit-llvm -fPIC -O0 -S global_dat.c -o global_dat_x86_pic.ll 再看看所产生的global_dat_x86_pic.ll文件,我看到下面的

    0热度

    1回答

    我想通过所有阶段来检查DAG,以确定指令选择出错的位置。但是我不确定如何解释输出DAG中的某些符号。 首先,LLVM-IR的功能: define i32 @get_data() #0 { entry: %0 = load i32* @data, align 4 ret i32 %0 } 我跑LLC与-debug,我看到最初的选择DAG为我感兴趣的功能是: === get

    2热度

    1回答

    与标题一样,在cuda程序中,内核参数在内核启动后驻留在GPU的本地内存还是全局内存中? 例如,在CUDA程序的LLVM IR: __global__ kernel(int param1): %0 = alloca int store param1, %0 因此,在这种情况下,在哪里呢%0点?本地内存或全局内存? 此外,我看到有时内核参数被保存并直接用在寄存器中,而不是存储在任何内存中。这个决定是

    1热度

    1回答

    我有一个指导访问者实施检查FCmpInst。在我的IR,我从铛上一个C++文件生成的几行: %2 = load float, float* %x, align 4 %3 = fcmp ogt float %2, 1.0000e+00 的FCmpInst访问期间调用getOperand(0)返回上述load指令。然后,如果我在load指令上调用getPointerOperand(),它将指向a

    0热度

    1回答

    在基本块中使用phi节点时,如果前一个块是某个块的概率较高,那么我应该放置这些标签。例如,采用下面列出的简单因子函数。 define private i64 @fact(i64 %start) { entry: %0 = icmp sle i64 1, %start br i1 %0, label %loop, label %endcond loop:

    1热度

    1回答

    当只有一个可能的前驱者时使用phi节点有什么好处?例如,当我运行opt -loop-<some specific pass> some-cool-file.ll -S时,如果我还没有添加一个前缀,那么输出将经常包含一个只有一个可能前驱的phi节点。 例子: endcond.loopexit: ; preds = %loop <- note: one predecessor %r

    2热度

    1回答

    我开始使用clang作为我正在处理的有界模型检查器的前端,我需要一些关于从AST获得的浮点数的帮助。 例如,对于此程序: int main() { float a = 1.0f; long double b = 5567.765434376l; } 生成的AST是: FunctionDecl 0x1dea160 </home/mramalho/main.c:3:1, l

    0热度

    1回答

    我想问一个关于LLVM IR语言的问题。对于basicblock,所使用的变量始终在使用前加载,并在使用后存储。两个示例基本块如下: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i8**, align 8 %i = alloca i32, align 4 %fact = allo

    7热度

    2回答

    我真的很喜欢使用swift进行嵌入式编程,因为我觉得它是一个更好的C++替代品,我使用的处理器是ARM​​ Cortex-M4F(http://www.ti.com/tool/ek-tm4c123gxl)。看看swift编译器page,它说你可以从swift源生成LLVM IR,然后我希望能用LLVM进行交叉编译。这可能吗?