LLVM ERROR: Cannot select: 0x5586a71270c0: f32 = Constant<1036831949>

LLVM ERROR: Cannot select: 0x5586a71270c0: f32 = Constant<1036831949>

我在某处收到错误 LLVM ERROR: Cannot select: 0x5644a6291a10: f32 = Constant<1036831949>

%a2 = load float, float* %a
%a3 = load float, float* %a
%cmp = fcmp one float %a3, 0.000000e+00
%not = xor i1 %cmp, true
%convert = zext i1 %not to i32
%conv = sitofp i32 %convert to float
%cmp2 = or float %conv, %a2
store float %cmp2, float* %a

这里是否存在类型不匹配的可能?我以前遇到过这个错误,但是在类型不匹配的情况下。不过不确定这里出了什么问题。

发现问题。 %cmp2 = or float %conv, %a2 无效,因为 or 只接受 int 类型。

提示其他新手,尝试 运行 llc myfile.llvm 查找 LLVM IR 中的问题。