From 0b893eb9723f66e05b2863dce1fdfcbefde8202a Mon Sep 17 00:00:00 2001 From: Folkert Date: Sun, 12 Sep 2021 14:01:41 +0200 Subject: [PATCH] remove alignment bump again --- compiler/gen_llvm/src/llvm/build_str.rs | 24 ++---------------------- compiler/mono/src/layout.rs | 4 ++-- compiler/test_gen/src/gen_primitives.rs | 2 ++ 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/compiler/gen_llvm/src/llvm/build_str.rs b/compiler/gen_llvm/src/llvm/build_str.rs index 87a8c50c57..4c3c815b60 100644 --- a/compiler/gen_llvm/src/llvm/build_str.rs +++ b/compiler/gen_llvm/src/llvm/build_str.rs @@ -268,25 +268,19 @@ fn decode_from_utf8_result<'a, 'ctx, 'env>( let ctx = env.context; let fields = match env.ptr_bytes { - 8 => [ + 8 | 4 => [ env.ptr_int().into(), super::convert::zig_str_type(env).into(), env.context.bool_type().into(), ctx.i8_type().into(), ], - 4 => [ - super::convert::zig_str_type(env).into(), - env.ptr_int().into(), - env.context.bool_type().into(), - ctx.i8_type().into(), - ], _ => unreachable!(), }; let record_type = env.context.struct_type(&fields, false); match env.ptr_bytes { - 8 => { + 8 | 4 => { let zig_struct = builder .build_load(pointer, "load_utf8_validate_bytes_result") .into_struct_value(); @@ -309,20 +303,6 @@ fn decode_from_utf8_result<'a, 'ctx, 'env>( struct_from_fields(env, record_type, values.iter().copied().enumerate()) } - 4 => { - let result_ptr_cast = env - .builder - .build_bitcast( - pointer, - record_type.ptr_type(AddressSpace::Generic), - "to_unnamed", - ) - .into_pointer_value(); - - builder - .build_load(result_ptr_cast, "load_utf8_validate_bytes_result") - .into_struct_value() - } _ => unreachable!(), } } diff --git a/compiler/mono/src/layout.rs b/compiler/mono/src/layout.rs index 3568ce5045..acc4c5fd78 100644 --- a/compiler/mono/src/layout.rs +++ b/compiler/mono/src/layout.rs @@ -1158,8 +1158,8 @@ impl<'a> Builtin<'a> { // // In webassembly, For that to be safe // they must be aligned to allow such access - List(_) | EmptyList => pointer_size.max(8), - Str | EmptyStr => pointer_size.max(8), + List(_) | EmptyList => pointer_size, + Str | EmptyStr => pointer_size, } } diff --git a/compiler/test_gen/src/gen_primitives.rs b/compiler/test_gen/src/gen_primitives.rs index 9a43cb8a78..f71ce6e98f 100644 --- a/compiler/test_gen/src/gen_primitives.rs +++ b/compiler/test_gen/src/gen_primitives.rs @@ -2531,6 +2531,8 @@ fn pattern_match_unit_tag() { ); } +// see for why this is disabled on wasm32 https://github.com/rtfeldman/roc/issues/1687 +#[cfg(not(feature = "wasm-cli-run"))] #[test] fn mirror_llvm_alignment_padding() { // see https://github.com/rtfeldman/roc/issues/1569