LLVM:错误:类型的常量未实现

时间:2016-08-30 18:18:02

标签: llvm

为什么LLVM纯解释器在数组常量方面与启用JIT的解释器的执行方式不同? (LLVM 3.8.1)

我有以下代码:

target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128    :128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-macosx10.9.0"

%MyType = type { i8* }

define i32 @main(i32 %argc, i8** %argv) nounwind uwtable {
  %const.arr = alloca [8 x i8], align 8
  store [8 x i8] c"\D0\CFT\15\01\00\00\00", [8 x i8]* %const.arr
  %1 = bitcast [8 x i8]* %const.arr to %MyType*
  ret i32 0
}

如果我使用llvm-as test.llvmlli test.llvm.bc进行编译,则不会出现错误。 另一方面,如果我点击lli -force-interpreter test.llvm.bc,我会收到以下错误:

LLVM ERROR: ERROR: Constant unimplemented for type: [8 x i8]

检查代码,我认为它没有任何问题。当我强制翻译时,为什么它的表现会有所不同?

0 个答案:

没有答案