llvm

    0熱度

    1回答

    我想實現一個簡單的JIT編譯器,使用LLVM,以及本教程(http://releases.llvm.org/4.0.1/docs/tutorial/BuildingAJIT1.html),並且正在運行到段錯誤。我已經以最小(儘管仍然有點長)的例子重寫了我的代碼。該示例循環遍歷整數0到9,並且每個嘗試編譯一個打印該整數的函數,將其添加到模塊,執行該函數,然後從JIT中移除該模塊。這是爲了模擬在其中用

    5熱度

    1回答

    我想了解一些關於LLVM IR的內容,尤其是什麼rustc輸出。即使是非常簡單的情況,我也會遇到一些麻煩。 我把源文件simple.rs如下: fn main() { let x = 7u32; let y = x + 2; } 和運行rustc --emit llvm-ir simple.rs獲取文件simple.ll,含 ; ModuleID = 'simple.cg

    1熱度

    1回答

    我添加了我的新自定義屬性,我可以在LLVM IR的內存操作數上看到它,在機器代碼級別還有任何方法可以這樣做嗎?

    2熱度

    1回答

    我喜歡下面是如何傳播: void foo(int __attribute__((aligned(16)))* p) { ... } 在這種情況下,指針的「alignedness」可在MC的水平,但它顯然是不使用LLVM-IR元數據的方式來實現這個。對齊信息對於某些目標非常重要,這些目標會根據此值更改代碼生成,我認爲我需要的更多的是這個屬性。 添加一個新的屬性,使其通過編譯器傳播的方式與「對齊」

    1熱度

    1回答

    在文檔[1]中,invoke指令被列爲終止指令,但在語法上它被寫爲: <result> = invoke [cconv] [ret attrs] <ty>|<fnty> <fnptrval>(<function args>) [fn attrs] [operand bundles] to label <normal label> unwind label <exce

    1熱度

    1回答

    我正在使用llc來使用命令行將.ll文件轉換爲.s。然後我想取這個文件,然後用nasm來創建一個可執行文件。雖然第一步似乎工作正常,但我無法完成第二步工作。 原始文件被稱爲code.ll,幷包含下面的代碼: define i32 @main() { ret i32 0 } 現在我使用CMD通過鍵入來構建.s文件: LLC code.ll 此工作正常,並創建一個code.s文件包含以

    2熱度

    1回答

    我正在嘗試在類Application中創建一個LLVMContext成員變量。 MCVE: #include <llvm/IR/LLVMContext.h> struct Foo {}; class Application { public: Application(int a, Foo foo, int b); private: llvm::LLVMContext

    0熱度

    2回答

    以下是我在LLVM LoopPass中的代碼。 virtual bool runOnLoop(Loop* L, LPPassManager &LPM) { BasicBlock& loopCondBlock = *(L->getHeader()); BasicBlock& loopIncBlock = *(L->getLoopLatch()); BranchInst*

    1熱度

    2回答

    是否有任何內置的LLVM pass來檢查生成的IR是否處於SSA格式? 例如:如果使用mem2reg選項編譯IR,我們將以SSA形式獲得IR。我們可以檢查我們的通行證,是否使用mem2reg?

    0熱度

    1回答

    在windows下構建llvm + compiler-rt時,我目前面臨一個問題。我正在使用最新的vs 2017社區和cmake來生成解決方案。一切順利。 然後我按照指示和一切建立。我的問題是在安裝時,我得到以下錯誤: file INSTALL cannot find 77> "F:/WORK_IN_PROGRESS/compile/build/$(Configuration)/lib/clan