小编cap*_*ane的帖子

LLVM - 链接问题

我正在为Timber语言编写LLVM代码生成器,当前的编译器会发出C代码.我的问题是我需要从生成的LLVM文件中调用C函数,例如编译器有一个实时垃圾收集器,我需要调用函数来通知何时在堆上分配新对象.我不知道如何将这些函数与生成的LLVM文件链接起来.

代码生成是通过生成.ll文件然后手动编译它们来完成的.

我试图从LLVM调用外部函数,但我没有运气.在示例中,我发现只调用C标准函数,如"puts"和"printf",但我想调用一个>自制函数.我被卡住了.

c linker llvm

11
推荐指数
2
解决办法
4902
查看次数

使LLVM内联函数库中的函数

我试图LLVM从库中内联函数.

我有一个LLVM bitcode文件(手动生成),我链接在一起llvm-link,我也有一个库(用C编写)编译成bitcode clang并存档llvm-ar.我设法将所有内容链接在一起并执行,但我无法设法LLVM从库中内联函数.关于如何做到这一点的任何线索?

linker llvm clang inlining llvm-ir

10
推荐指数
1
解决办法
1930
查看次数

LLVM - 没有 BB 的无效指令

有人知道这个错误是什么意思吗?当我尝试反汇编由 LLVMWriteBitcodeToFile 编写的文件时出现错误。当我使用 LLVMDumpModule 转储模块并手动组装和反汇编文件时,不会发生错误。我试图编译的模块(来自 LLVMDumpModule)看起来像:

; ModuleID = 'Test'

define i32 @a(i32) {
entry:
  %icmp = icmp eq i32 %0, 1                       ; <i1> [#uses=1]
  br i1 %icmp, label %_L2, label %_L3

_L1:                                              ; preds = %_L3
  ret i32 %0
  call void @RAISE(i32 1)
  unreachable

_L2:                                              ; preds = %entry
  ret i32 1

_L3:                                              ; preds = %entry
  br label %_L1
}

declare void @RAISE(i32)
Run Code Online (Sandbox Code Playgroud)

有什么线索吗?

llvm

4
推荐指数
1
解决办法
906
查看次数

标签 统计

llvm ×3

linker ×2

c ×1

clang ×1

inlining ×1

llvm-ir ×1