问题标签 [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 回答
2064 浏览

objective-c - 在 Objective-C++ 代码中的 C++ 代码中编译 C 代码

我的问题有点复杂:

库: 我有一个用 C 和 C++ 编写的库。它使用 Apple LLVM 在 XCode 中完美编译。这个库本身的工作是由 C 代码完成的,而 C++ 部分只是一个 C++ 接口,因为我更喜欢 C++。理论上我只需要使用 C++ 来与它通信。

应用程序: 我在 Objective-C 中有一个使用上述库的应用程序。当然,由于与我的库的通信是通过 C++ 完成的,因此我需要一个 .mm 文件才能从“Objective-C++”调用我的库。

在编译过程中......发生了几种“C”语言的发布:

  • 错误:非常量静态数据成员必须被初始化
  • 错误:文件范围内不允许语句表达式
  • ETC...

它只发生在 Objective-C++

  • Objective-C++ (app) -> C++ headers (lib) -> C headers (lib, with extern "C") -> NOT OK!!! 为什么?

如果我制作另一个 C++ 应用程序来测试库,那就没问题了

  • C++ (app) -> C++ (lib) -> C header (lib, with extern "C") -> OK

详细信息:我一直在这里使用 Apple LLVM 编译器

问题: 如何从 Objective-C++ 代码从 C++ 编译 C 代码?为什么它与从常规 C++ 代码编译不同?

0 投票
1 回答
122 浏览

llvm-3.0 - Function arg list LLVM opt pass 中的数组检测

假设我有以下 LLVM IR

定义 void @foo(i32* %a, i32* %m) nounwind { ...

我通过为第一个 arg 传递一个数组并为 m 传递一个变量的地址来调用 foo。现在,我需要分析 foo 的 arg 列表并确定哪个 arg 传递了一个数组,而哪个只是一个指针地址。我知道两者实际上都是地址,但是 LLVM 是否提供某种元数据,以便我可以静态确定传入的类型。

注意:我正在写一个选择通行证

0 投票
3 回答
8277 浏览

c++ - c++ -std=c++11 -stdlib=libc++ 在 osx lion 上给出错误

这应该是一个重复的问题。但是我用谷歌搜索了很多,但没有找到解决我问题的方法。

我正在尝试在 osx lion 上使用 c++11 标准功能,但它不起作用。我相信这个特性被称为列表初始化器。根据http://clang.llvm.org/cxx_status.html这个功能在 clang 3.1 中,这是我正在使用的版本。

下面是解释我的简单测试的 shell o/p。谁能告诉我我做错了什么?我忘了一面旗帜吗?

编译器是:

操作系统是

测试文件是

编译器输出是

好的,我不想到达那里,因为在stackoverflow上正确格式化以下内容需要很多时间。但是添加 -stdlib=c++ 会产生更多问题。现在我得到 14 个错误。

0 投票
1 回答
1875 浏览

python - Ubuntu 服务器 12.04 上的 llvmpy

我正在尝试使用 edpFree 7.3-2 在 ubuntu 12.04 上安装 llvmpy

在 pip 命令之后,我收到一个错误:

问题出在矢量化组件上!

作为我安装的先决条件(使用 aptitude):

可能是 3.0 必须替换为 3.1 ?

你能帮助我吗 ?

0 投票
1 回答
849 浏览

c++ - LLVM:在 C++ 源代码中注入调试行

我已经下载了 LLVM 3.1 并成功构建了它。我的要求是在 C++ 源代码文件中添加一些调试行。我使用 CLANG 3.1 对模块进行了编码。但是 CLANG 报告了很多 gcc 没有的 AST 错误。请注意,我的代码使用 gcc 编译器编译得很好。此外,我的 C++ 程序有很多 #include 语句。LLVM 期望相同的路径在路径中可用,并在不同级别再次失败。

0 投票
1 回答
646 浏览

llvm - 程序中的加载指令数

如何通过 LLVM 计算一个简单的“hello world”程序的加载指令总数?

0 投票
1 回答
1745 浏览

llvm - 指定我的 LLVM 通行证对 mem2reg 通行证的依赖关系

我正在编写一个ModulePass并使用它调用它opt -load。我需要alloca在我的通行证运行时将其提升为寄存器,使用 -mem2reg 开关进行选择。

有一个链接表明,PromoteMemoryToRegsiter 通行证是一个转换通行证,因此我的通行证不需要。这是 2010 年的声明。这仍然成立吗?

我发现的帖子之一建议类似

但这与我上面链接的帖子相矛盾。

所以我的问题是,如果可能的话,如何表达我的通行证的这种依赖关系?一般来说,我如何表达这种传递依赖关系?一个变换通道和另一个通道有什么区别?

0 投票
1 回答
148 浏览

android - 如何构建打包在 Android Sources 中的 llvm?

我正在尝试构建打包在 android 源代码中的 llvm。

我正在运行 ubuntu 12.04,android src 版本为 4.0.4

llvm 位于 android-src/external/llvm/

我做了以下构建:

并出现以下错误消息:

我可以使用以下版本构建本地 llvm:3.2

我找不到 android llvm 的版本。

0 投票
2 回答
1200 浏览

llvm - 添加一个新的寄存器分配通道 llvm

我正在 llvm 上编写一个新的寄存器分配通道。我按照这里的说明http://llvm.org/docs/WritingAnLLVMPass.html#the-machinefunctionpass-class

该通行证不显示在 llc --help 中。我将贪婪分配算法更改为以名称“greedier”注册并构建。即使这似乎并没有反映在有限责任公司中。任何人都可以帮忙吗?

0 投票
1 回答
547 浏览

llvm - 如何在 LLVM 中插入/删除边缘?

我可以通过更改其目标来插入一条新边,并通过其源和目标删除另一条边。换句话说,我可以用另一条边替换一条边的基本块目标,以在 CFG 中进行一些修改吗?

我尝试getEdge()了函数 in ProfileInfo,但它不起作用: