问题标签 [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.
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++ 代码编译不同?
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 是否提供某种元数据,以便我可以静态确定传入的类型。
注意:我正在写一个选择通行证
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 个错误。
python - Ubuntu 服务器 12.04 上的 llvmpy
我正在尝试使用 edpFree 7.3-2 在 ubuntu 12.04 上安装 llvmpy
在 pip 命令之后,我收到一个错误:
问题出在矢量化组件上!
作为我安装的先决条件(使用 aptitude):
可能是 3.0 必须替换为 3.1 ?
你能帮助我吗 ?
c++ - LLVM:在 C++ 源代码中注入调试行
我已经下载了 LLVM 3.1 并成功构建了它。我的要求是在 C++ 源代码文件中添加一些调试行。我使用 CLANG 3.1 对模块进行了编码。但是 CLANG 报告了很多 gcc 没有的 AST 错误。请注意,我的代码使用 gcc 编译器编译得很好。此外,我的 C++ 程序有很多 #include 语句。LLVM 期望相同的路径在路径中可用,并在不同级别再次失败。
llvm - 程序中的加载指令数
如何通过 LLVM 计算一个简单的“hello world”程序的加载指令总数?
llvm - 指定我的 LLVM 通行证对 mem2reg 通行证的依赖关系
我正在编写一个ModulePass
并使用它调用它opt -load
。我需要alloca
在我的通行证运行时将其提升为寄存器,使用 -mem2reg 开关进行选择。
有一个链接表明,PromoteMemoryToRegsiter 通行证是一个转换通行证,因此我的通行证不需要。这是 2010 年的声明。这仍然成立吗?
我发现的帖子之一建议类似
但这与我上面链接的帖子相矛盾。
所以我的问题是,如果可能的话,如何表达我的通行证的这种依赖关系?一般来说,我如何表达这种传递依赖关系?一个变换通道和另一个通道有什么区别?
android - 如何构建打包在 Android Sources 中的 llvm?
我正在尝试构建打包在 android 源代码中的 llvm。
我正在运行 ubuntu 12.04,android src 版本为 4.0.4
llvm 位于 android-src/external/llvm/
我做了以下构建:
并出现以下错误消息:
我可以使用以下版本构建本地 llvm:3.2
我找不到 android llvm 的版本。
llvm - 添加一个新的寄存器分配通道 llvm
我正在 llvm 上编写一个新的寄存器分配通道。我按照这里的说明http://llvm.org/docs/WritingAnLLVMPass.html#the-machinefunctionpass-class。
该通行证不显示在 llc --help 中。我将贪婪分配算法更改为以名称“greedier”注册并构建。即使这似乎并没有反映在有限责任公司中。任何人都可以帮忙吗?
llvm - 如何在 LLVM 中插入/删除边缘?
我可以通过更改其目标来插入一条新边,并通过其源和目标删除另一条边。换句话说,我可以用另一条边替换一条边的基本块目标,以在 CFG 中进行一些修改吗?
我尝试getEdge()
了函数 in ProfileInfo
,但它不起作用: