问题标签 [llvm-3.0]

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.

0 投票
2 回答
1491 浏览

llvm - LLVM IR:如何调用另一个 .ll 文件中的函数

我正在编写 LLVM IR 代码,我可以在另一个 .ll 文件中调用函数吗?

例如:在一个.ll文件中,有一个函数foo();我可以在 b.ll 中使用这个函数,就像调用 foo 一样吗?如果是这样,我怎样才能包含 a.ll

谢谢

0 投票
1 回答
381 浏览

compiler-errors - 究竟应该使用什么命令行来生成所有记录RegisterInfo.td 文件?

背景资料:到目前为止,我已经阅读了 llvm 教程,包括: 表生成命令指南

Table Gen 的通用文档,尤其是 Running TableGen 部分

我目前正在为 llvm 的新目标编写代码,我不允许在此处发布。我将 X86 目标用于我的问题的上下文,因为它仍然适用于该目标。

我正在尝试做的事情:我正在尝试使用 tablegen 从 X86RegisterInfo.td 生成记录我正在使用的命令行是这样的:

返回此错误

我能够运行上面 Running TableGen 参考中给出的 X86.td 示例命令,所以我非常有信心包含路径 -I/.../... 是正确的,因为如果没有以这种方式编写,命令不运行。我也在同一目录中运行我的命令,../Target/X86,作为有效的示例命令。

使用什么正确命令以便 TableGen 工具生成 X86RegisterInfo.td 文件的记录(或者通常用于 XXXRegisterInfo.td,其中 XXX 是目标名称)?

我对 LLVM 和自定义或编写编译器非常陌生,所以我祈祷只是我不了解如何使用命令行,但如果它也可能是一个完全不同的问题,任何提示我正确的方向都非常感谢。

非常感谢你!

0 投票
1 回答
1119 浏览

llvm - 关于 LLVM IR:LLVM ir 代码中没有函数定义

我正在查看由 clang 转换为 cpp 文件的 llvm ir 文件。但我发现 llvm ir 文件中有几个函数只有声明而没有定义。而且所有这些功能都不是“内置”功能,例如:

就像是:

似乎这些函数正在使用一些外部定义?我是 LLVM IR 的新手。我想知道 LLVM IR 是否可以像 cpp 库那样做,我可以存储我将在一些 LLVM IR 库中使用的函数,并通过像 include 之类的操作在 .ll 文件中使用它们?

谢谢

0 投票
1 回答
2438 浏览

compiler-construction - 正在尝试编写 LLVM 后端。没有好的教程

我正在尝试为我最近设计的自定义处理器编写一个 LLVM 后端。

我尝试按照http://llvm.org/docs/WritingAnLLVMBackend.html上的官方教程进行操作

但它是如此模糊,如此不完整和模糊,以至于我没有遵循它。

然后我开始在网上搜索其他教程,所有这些教程都遭受与原始教程相同的症状。似乎作者假设了大量的预读并在没有必要的初步解释的情况下编写了他们的教程。

如何找到教程或任何可以让我在 LLVM 中编写功能性后端的内容?

-- 更新:我看到两张反对票和两张赞成票。否决票说我的问题与编程无关。我想知道版主如何得出结论,编写编译器与编程无关。

0 投票
0 回答
47 浏览

llvm - 计算每条指令在运行时可以被调用的次数

我读了这个问题的答案

如何计算每条指令在运行时可以调用的次数?

我在 InstrProfiling.cpp 文件中找到了一个名为 的函数castToIncrementInst,但该函数只计算指令总数。我需要每个指令或基本块的调用次数

0 投票
2 回答
1591 浏览

llvm - 从函数获取文件名和位置

我有一个遍历 LLVM IR 代码的 LLVM 通行证,我想为原始代码的函数和基本块获取目录和文件名。我知道当我有一个指令指针时,我可以使用下面的代码轻松获取信息:感谢@hailinzeng(如何从 LLVM 指令中获取文件名和目录?

但是,由于该类FunctionBasicBlock没有成员函数getDebugLoc(),因此这是行不通的。我在这里看到了另一个使用元数据的帖子,但我不知道如何访问元数据DILocationDIScope从元数据中获取。使用

给出以下错误

/usr/lib/llvm-3.9/include/llvm/IR/Metadata.def:83:42:注意:'llvm::DILocation'HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocation)的前向声明

我正在使用 llvm 3.9。

更新:感谢斯坦尼斯拉夫·潘克维奇。我没有包括正确的标题,但现在我有一个新问题。DILocation 需要 LLVMContext、StorageType 和 unsigned Line。如何从函数指针中获取行号和存储类型? DILocation(LLVMContext &C, StorageType Storage, unsigned Line,

对于那些遇到类似问题的人,您可以使用 LLVMContext 获取

0 投票
1 回答
1318 浏览

llvm - llvm - 获取 br 类型指令的标签字段中引用的基本块的第一条指令

我正在尝试编写一个检查代码控制流的通行证。给定 br 指令,我需要访问标签字段中引用的基本块。

例如,对于代码:

我得到了 IR 代表

现在,当我在 pass 中遇到这条指令时,我需要确切地知道这些标签指向的位置。谁能告诉我我该怎么做?

0 投票
2 回答
2343 浏览

label - llvm - 获取 br 指令的标签

我的问题很简单。给定分支类型的指令,我如何从中提取标签?例如:

应该给我 while.cond

应该给我while.end

应该分别给我 if, if.then, if.end。

0 投票
1 回答
135 浏览

llvm - 从 uint8_t* 转换为 StringRef

0 投票
1 回答
632 浏览

llvm - LLVM IR 中的指令 ID 或编号

在 Execution.cpp 中,我可以获得所有指令和所有变量的值。有什么方法可以获取每条指令的ID或编号。