【发布时间】:2021-10-19 18:59:42
【问题描述】:
我在使用 LLVM IR 中的 printf() 函数时遇到问题。我只想打印浮点数的值,但我只得到0.000000。它适用于整数和字符串,但不适用于浮点数。
简单示例:
@.fstr = private unnamed_addr constant [4 x i8] c"%f\0A\00"
declare i32 @printf(i8*, ...)
define i32 @main() {
%1 = getelementptr [4 x i8],[4 x i8]* @.fstr, i64 0, i64 0
%2 = call i32 @printf(i8* %1, double 2.0)
%3 = call i32 @printf(i8* %1, float 2.0)
ret i32 0
}
当我用 LLVM 编译它并用 Clang 链接它并运行我得到的可执行文件时:
0.000000
0.000000
如果我使用lli 运行.bc 文件,结果相同。我已经阅读了相关的post,但正如您所见,它也不适用于双打。
【问题讨论】:
标签: printf llvm llvm-ir c-standard-library