mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
remove bitcast in Str.fromFloat
This commit is contained in:
parent
49ca8f3e86
commit
411a265024
2 changed files with 4 additions and 9 deletions
|
@ -310,11 +310,9 @@ const c = @cImport({
|
||||||
|
|
||||||
// Str.fromFloat
|
// Str.fromFloat
|
||||||
// When we actually use this in Roc, libc will be linked so we have access to std.heap.c_allocator
|
// When we actually use this in Roc, libc will be linked so we have access to std.heap.c_allocator
|
||||||
pub fn strFromFloatC(int: i64) callconv(.C) RocStr {
|
pub fn strFromFloatC(float: f64) callconv(.C) RocStr {
|
||||||
// const foobar = @bitCast(f32, @intCast(i32, float));
|
// NOTE the compiled zig for float formatting seems to use LLVM11-specific features
|
||||||
// const result = std.fmt.allocPrint(std.heap.c_allocator, "{}", .{@as(f32, foobar)}) catch unreachable;
|
// hopefully we can use zig instead of snprintf in the future when we upgrade
|
||||||
const float = @bitCast(f64, int);
|
|
||||||
|
|
||||||
var buf: [100]u8 = undefined;
|
var buf: [100]u8 = undefined;
|
||||||
|
|
||||||
const result = c.snprintf(&buf, 100, "%f", float);
|
const result = c.snprintf(&buf, 100, "%f", float);
|
||||||
|
|
|
@ -281,11 +281,8 @@ pub fn str_from_float<'a, 'ctx, 'env>(
|
||||||
int_symbol: Symbol,
|
int_symbol: Symbol,
|
||||||
) -> BasicValueEnum<'ctx> {
|
) -> BasicValueEnum<'ctx> {
|
||||||
let float = load_symbol(scope, &int_symbol);
|
let float = load_symbol(scope, &int_symbol);
|
||||||
let int = env
|
|
||||||
.builder
|
|
||||||
.build_bitcast(float, env.context.i64_type(), "to_bits");
|
|
||||||
|
|
||||||
let zig_result = call_bitcode_fn(env, &[int], &bitcode::STR_FROM_FLOAT).into_struct_value();
|
let zig_result = call_bitcode_fn(env, &[float], &bitcode::STR_FROM_FLOAT).into_struct_value();
|
||||||
|
|
||||||
zig_str_to_struct(env, zig_result).into()
|
zig_str_to_struct(env, zig_result).into()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue