问题标签 [llvm-c++-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
llvm - llvm:如何使用 llvm api 将函数 A 替换为另一个函数?
我想将“函数 A”调用替换为“函数 B”调用。目前,我已经插入了“函数 B”,我认为 ReplaceInstWithInst() 可能会有所帮助,但是,我不知道如何找到“函数 A”。我应该怎么做?
llvm - LLVM:检查物理寄存器是否处于活动状态
如何确定在给定时间物理 CPU 寄存器是否包含“已使用”值,即它是否处于活动状态?我正在使用 LLVM 3.4 C++ API。
llvm - 如何在 LoopPass 中获取模块?我需要它来做模块 - getOrInsertFunction
如何在 LoopPass 中获取模块?我需要它来做模块 - getOrInsertFunction?
使用循环“L”
导致错误:“class llvm::Module”类模块的前向声明;
llvm - llvm:如何获取基本块的标签
我已经写了一个 pass 来检测和打印函数中基本块的标签,因为我想splitBasicBlock()
进一步使用。我是这样写的:
IR 文件如下所示:
但是,我对标签一无所知:
这些“未命名”的基本块有什么问题?我应该怎么办?
llvm - llvm pass:如何使用现有变量值插入变量
我定义了int a = 5
;在源代码中,我将源代码转换为 LLVM IR:
我想int b = a;
通过写通行证来插入。我编译int a=5; int b=a
成 LLVM IR,它首先加载“a”,然后存储它。我还检查了 doxygen,其中 LoadInstLoadInst (Value *Ptr, const Twine &NameStr, Instruction *InsertBefore)
仍然存在,我不知道如何获得Value
“a”。
如何获取变量值?
llvm - llvm:visitInstruction 不会访问基本块中的每条指令?
我正在尝试在基本块上编写一个简单的传递,代码如下:
非常奇怪的是,我得到了一些这样的输出:
很容易看出上面两个块中实际的指令数应该是5条和7条,但是visitInstrucion函数有时不会访问一个基本块的最后一条指令,为什么会出现这种情况呢?这应该发生吗?
c++ - LLVM 将 Loop* 存储在 std::vector 中
我偶然发现了一些非常奇怪的东西——我正在写一个 LLVM 模块 Pass。我遍历模块的所有函数,然后遍历每个非声明函数的所有循环,并将指向循环的指针存储在std::vector
. 这是来源:
现在,如果我运行它,我会遇到运行时错误 - 它无法打印循环,不知何故我正在执行空指针取消引用或某事。有任何想法吗?
llvm - 如何调用指向 C 函数的指针
我有一个指向我需要调用的函数的指针,而无需通过 llvm::Module::getOrInsertFunction。此示例不起作用:
有办法吗?还是我必须调用 getOrInsertFunction?
llvm - 如何将函数指针转换为 LLVM 值,以便我可以在 IR 中调用它?
我正在研究类似 JIT 的东西。我有以下代码:
我有一个指向这个函数的指针,我的问题是如何将指针包装成 aLLVM:Value
以便我可以使用 将它插入到我的 IR 中,IRBuilder.CreateCall
我需要做什么?
c++ - LLVM 插入传递到 PassManager
我正在编写模块级传递,并且在runOnModule
函数内部我有以下代码:
}
这一切都可以编译,但是当我运行它时,出现以下错误:
我尝试将下面的代码放在 lib/Transforms/IPO/PassManagerBuilder.cpp in the
populateModulePassManager 方法中,但什么也没发生。
}
任何帮助都会非常感谢。