【问题标题】:How to generate LLVM bitcode如何生成 LLVM 位码
【发布时间】:2013-05-28 00:26:45
【问题描述】:

我想生成用documentation写的位码文件(.bc):

你好.c

#include <stdio.h>

int main() {
  printf("hello world\n");
  return 0;
}

然后

% clang -O3 -emit-llvm hello.c -c -o hello.bc

% lli hello.bc

运行代码,但我有奇怪的输出:

lli: Attributes.cpp:367: static llvm::AttrListPtr llvm::AttrListPtr::get(llvm::LLVMContext &, ArrayRef<llvm::AttributeWithIndex>): Assertion `Attrs[i].Attrs.hasAttributes() && "Pointless attribute!"' failed.
0  lli             0x0000000000c944ff
1  lli             0x0000000000c94a79
2  libpthread.so.0 0x00007fbf12a88060
3  libc.so.6       0x00007fbf11d663e5 gsignal + 53
4  libc.so.6       0x00007fbf11d69b4b abort + 379
5  libc.so.6       0x00007fbf11d5ed8d __assert_fail + 221
6  lli             0x0000000000b8b285 llvm::AttrListPtr::get(llvm::LLVMContext&, llvm::ArrayRef<llvm::AttributeWithIndex>) + 517
7  lli             0x000000000051f14e llvm::BitcodeReader::ParseAttributeBlock() + 494
8  lli             0x00000000005249f1 llvm::BitcodeReader::ParseModule(bool) + 497
9  lli             0x0000000000526617 llvm::BitcodeReader::ParseBitcodeInto(llvm::Module*) + 359
10 lli             0x000000000052eae9 llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) + 569
11 lli             0x000000000052ee3f llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) + 15
12 lli             0x00000000004ea29a llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) + 170
13 lli             0x00000000004e7078 llvm::ParseIRFile(std::string const&, llvm::SMDiagnostic&, llvm::LLVMContext&) + 536
14 lli             0x00000000004e3a58 main + 312
15 libc.so.6       0x00007fbf11d5130d __libc_start_main + 237
16 lli             0x00000000004e1f49
Stack dump:
0.  Program arguments: lli hello.bc 
Aborted

有什么问题。为什么它不起作用?

【问题讨论】:

    标签: c++ llvm bitcode


    【解决方案1】:

    这可能是您的特定 LLVM/Clang 版本的问题。您是否在启用断言的情况下从源代码编译它?您只需要获得一个修复了该错误的更新版本。 (请参阅http://llvm.org/bugs/show_bug.cgi?id=15786 以获取与旧版本类似的断言失败报告。)

    FWIW - 该程序在我的本地 SVN 版本上运行良好(clang 版本 3.4(主干 182672))。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-23
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2012-09-03
      相关资源
      最近更新 更多