Skip to content

Commit c9faaa5

Browse files
committed
Use constant pool in C codegen test
By using a nonzero floating-point constant, we can force creation of a constant pool and make sure that everything works.
1 parent 5e45f36 commit c9faaa5

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

c-api-tests/cases/codegen.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,14 @@ void inner_builder_callback(spidir_builder_handle_t builder, void* ctx) {
2828
spidir_builder_set_entry_block(builder, block);
2929
spidir_builder_set_block(builder, block);
3030
spidir_value_t param = spidir_builder_build_param_ref(builder, 0);
31-
spidir_value_t two =
32-
spidir_builder_build_iconst(builder, SPIDIR_TYPE_I32, 2);
31+
spidir_value_t stackslot = spidir_builder_build_stackslot(builder, 8, 8);
32+
// The integer 2 interpreted as a float.
33+
spidir_value_t twof =
34+
spidir_builder_build_fconst64(builder, 0x0.0000000000002p-1022);
35+
spidir_builder_build_store(builder, SPIDIR_MEM_SIZE_8, twof, stackslot);
36+
spidir_value_t two64 = spidir_builder_build_load(
37+
builder, SPIDIR_MEM_SIZE_8, SPIDIR_TYPE_I64, stackslot);
38+
spidir_value_t two = spidir_builder_build_itrunc(builder, two64);
3339
spidir_value_t retval = spidir_builder_build_iadd(builder, param, two);
3440
spidir_builder_build_return(builder, retval);
3541
}

0 commit comments

Comments
 (0)