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

c++ - LLVM 字符串值对象:如何从值中检索字符串?

从现有的 AST 构建 IR 时,我的 AST 有一些字符串值(在编译时它们是从 构建的std::string),我想安全地设置它们llvm::Value以用作表达式的一部分。

在这种情况下,我不需要在运行时绑定字符串,因为字符串值仅用于在编译时将内容解析为变量、函数或类(该语言不支持本机字符串类型)。

保持我的字符串内容不变llvm::Value并且仍然能够在编译的后期阶段(构建嵌套表达式时)检索它的最佳方法是什么?

更具体地说,如果我设置llvm::Value

如何安全地检索字符串值?llvm::ConstantArray包装字符串的适当方法是什么?

0 投票
1 回答
5080 浏览

c++ - llvm::Type 结构的字符串表示

llvm::Type2.9 和更早的版本曾经有getDescription方法来检索类型的字符串表示。此方法在 llvm 3.0 中不再存在。

我不确定这是否被弃用Type::print(raw_ostream&),但无论如何我对这个 API 感到好奇。有哪些关于如何使用它的例子?我怎样才能转储到stringor const char*

特别是,我想将Boost::Format现代 c++ 的字符串传递给它sprintf

0 投票
1 回答
269 浏览

haskell - 在 Linux 上构建 haskell llvm 绑定时出错

我构建了 llvm 3.0,从这里下载。我做了:

./configure CC=gcc CXX=g++ --enable-shared

sudo make -j5 -s 安装

接下来,我从这里克隆了 LLVM 绑定。我在尝试:

runhaskell 安装配置

但我得到:

正在配置 llvm-3.0.0.0...

Setup.lhs:至少缺少以下依赖项:

llvm-base ==3.0.*,类型级别 -any

我正在运行 Linux Mint 64 位(相当于 Ubuntu 11.0)。GHC 是 6.12.3。我尝试了 cabal 安装,但显然 llvm 版本太旧而无法运行一些示例(我弄错了吗?)。

我究竟做错了什么?

0 投票
2 回答
586 浏览

ios5 - iOS5 下的 memset 'CortexA8' 问题

自从 iOS5 上街以来,我已经收到了很多(很多)崩溃报告,例如:

相关细节:

  • XCode 4.2
  • LLVM 3.0
  • “armv6 armv7”架构
  • iOS 5 基础 SDK
  • 针对 iOS 4.0
  • 仅在 iOS5 下崩溃(所有 iOS5 iPhone 型号。没有 iPad 崩溃,但应用程序不是通用的)
  • 无法在我的任何设备上重现崩溃(当然)

现在[FooViewController prepareShapes]memset直接调用,而是将结构(表示形状)传递给尝试重新分配它的类方法。堆栈跟踪跳过类方法的事实有点奇怪,但毫无疑问,这是我不理解的更多编译器魔法。在类方法中,调用的块memset如下:

这是被操纵的结构

我认识到这与推荐的 OpenGL 方法相差甚远,但真正让我困惑的事情(我在这里真的很困惑)memset只是在 iOS5 下爆炸(我正在使用QuincyKit收集崩溃报告和HockeyApp聚合它们)。这个确切的代码已经在 iOS4(使用 GCC 编译)下运行了几个月。

我希望这不会被解释为“做我的功课”。我花了几个月的时间研究、调整(我已经发布了几个更新来解决这个问题)和拉扯头发,但没有任何进展。我完全没主意了。

0 投票
1 回答
964 浏览

llvm - 尝试链接 LLVM 库时出现编译错误

我试图在我的 C++ 代码中使用一些 LLVM API,我最终得到了链接器错误。我正在开发 Apple MacOSX Lion。使用 g++ 进行编译。引发错误的是 CreateGlobalStringPtr。这是 LLVM 3.0。

这是代码:

0 投票
1 回答
1134 浏览

llvm - 当我不为 main 创建方法 + 基本块时,CreateGlobalStringPtr 崩溃

CreateGlobalStringPtr 中的以下崩溃:

而这个没有,不知道这里发生了什么:

不确定如何创建主例程和入口点可以消除崩溃。以为他们没有关系。以下是我对 g++ 的编译选项:

0 投票
1 回答
198 浏览

compilation - llvm:是否可以在一个阶段合并验证和编译?

一般而言,在编写 llvm 前端时,将采用 AST 并首先检查其语义是否定义明确。在此之后,将采用 AST 并执行 IR 构建阶段。我想知道,直接在 AST 上执行 IR 构建阶段有多现实,如果在构建过程中发现错误,恢复对模块对象的任何部分更改?

我认为需要这样的东西:

  • 删除定义的类型
  • 删除定义的全局变量
  • 我还缺少什么吗?

有什么想法吗?在构建阶段失败后彻底恢复模块更改需要做什么的一般准则是什么?

现在,这是从乐观编译的角度来考虑的,如果出现问题,则优雅地失败。在当前的 LLVM 模型下,这很可能是完全不可能或不鼓励的。在这方面一个明确且有据可查的答案也是完全可以接受的

编辑最后,我只想要一种合理的方式来增量添加功能,但可以优雅地恢复到模块的先前状态和/或LLVMContext如果功能构建失败。无论是哪种首选方法都将完全令人满意。

谢谢!

0 投票
1 回答
460 浏览

llvm - llvm:增量构建 JIT 内容的策略

我希望我的语言后端以增量方式构建函数和类型,但当函数和类型未能成功构建(由于用户输入问题)时,不要污染主模块和上下文。

关于这个,我问了一个较早的问题。我可以看到的一种策略是在 temp 模块中构建所有内容,并且LLVMContext仅在成功后迁移到主上下文,但我不确定当前 API 是否可行。例如,我不知道要在不同的上下文之间迁移该内容,因为它们应该代表 LLVM 功能的孤立岛屿,但也许总有另一种方法可以将所有内容保存到 .bc 并加载到其他地方?

你会建议什么其他策略来实现这一目标?

0 投票
1 回答
2824 浏览

cocoa - 提早返回/退出时,@autoreleasepool {} 是否会耗尽?

考虑这个例子:

以前使用手动 NSAutoreleasePools,如果我们提前返回,我们需要调用[pool drain],否则池不会被耗尽。随着新@autoreleasepool {}

0 投票
1 回答
387 浏览

llvm - 在 LLVM-3.0 中执行 Openmp 程序

我使用 llvm-gcc 为 Openmp 程序(用 c 编写)生成了一个 .ll 文件。
然后使用 opt(3.0 版)
进行优化但是当我尝试使用 lli 或 llvm-ld 执行优化的 .ll 文件时,出现以下错误,

这是我遵循的步骤,

请帮我解决这个问题。
提前致谢。