WriteBitcodeToFile终止程序

时间:2015-06-17 00:59:05

标签: llvm llvm-ir

我执行这个简单的代码,但是在" WriteBitcodeToFile"幸福的例外:  "在抛出' std :: bad_alloc'的实例后终止调用   what():std :: bad_alloc"
我不明白为什么会这样(。 现在我使用llvm 3.6.1,我使用clang ++ 3.6.1。 在llvm 3.3代码工作正常。

调用堆栈:

  

0提升/lib/x86_64-linux-gnu/libc.so.6 0 0x7ffff6da10d5
  1 abort /lib/x86_64-linux-gnu/libc.so.6 0 0x7ffff6da483b
  2 __gnu_cxx :: __ verbose_terminate_handler()/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff76cbd4d
  3 ?? /usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff76c9d96
  4 std :: terminate()/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff76c9de1
  5 __cxa_throw /usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff76c9ff8 6 operator new(unsigned   ()/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff76ca4fc
  7 std :: string :: _ Rep :: _ S_create(unsigned long,unsigned long,   的std ::分配器   const&)/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff7709659
  8 std :: string :: _ Rep :: _ M_clone(std :: allocator const&,unsigned   long)/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff770a3fb
  9 std :: basic_string,std :: allocator

     
    

:: basic_string(std :: string const&)/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0 0x7ffff770aadc
    10 llvm :: Twine :: str()const Twine.cpp 19 0x6e43c3
    11 llvm :: Triple :: Triple(llvm :: Twine const&)Triple.cpp 449 0x6dec99
    12 llvm :: WriteBitcodeToFile(llvm :: Module const *,     llvm :: raw_ostream&)BitcodeWriter.cpp 2071 0x42eee5
    13 main main.cpp 43 0x40da26

  

代码:

std::error_code err_code;
llvm::LLVMContext &ctx = llvm::getGlobalContext();
llvm::Module *mod;
llvm::SMDiagnostic Err;


std::string filename = InputFilename;

mod = llvm::parseIRFile(filename,Err,ctx).get();

llvm::StringRef sRefName(OutputFilename);
llvm::raw_fd_ostream raw(sRefName, err_code,  (llvm::sys::fs::OpenFlags)8);
 llvm::WriteBitcodeToFile(mod, raw); // SIGABORT

0 个答案:

没有答案