| ;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. | |
| ;; RUN: wasm-opt %s --enable-bulk-memory --post-emscripten -S -o - | filecheck %s | |
| ;; Checks that the start/stop exports are removed and that the data they | |
| ;; refer to is either zero'd out, or the segment emptied. | |
| ;; Two of the segments used here are active, so their offsets are trivial | |
| ;; to dirive. One segment is passive and its offset is derived from the | |
| ;; memory.init instruction. | |
| ;; Explicitly use a data address that is larger then INT_MAX to verify | |
| ;; that these offset are correctly interpreted as unsigned. | |
| (module | |
| ;; CHECK: (type $0 (func)) | |
| ;; CHECK: (global $em_asm_start i32 (i32.const 1000)) | |
| (global $em_asm_start i32 (i32.const 1000)) | |
| ;; CHECK: (global $em_asm_stop i32 (i32.const 1011)) | |
| (global $em_asm_stop i32 (i32.const 1011)) | |
| ;; CHECK: (global $em_js_start i32 (i32.const -1294967290)) | |
| (global $em_js_start i32 (i32.const 3000000006)) | |
| ;; CHECK: (global $em_js_stop i32 (i32.const -1294967281)) | |
| (global $em_js_stop i32 (i32.const 3000000015)) | |
| ;; CHECK: (global $em_lib_deps_start i32 (i32.const 3000)) | |
| (global $em_lib_deps_start i32 (i32.const 3000)) | |
| ;; CHECK: (global $em_lib_deps_stop i32 (i32.const 3009)) | |
| (global $em_lib_deps_stop i32 (i32.const 3009)) | |
| ;; CHECK: (global $foo_start i32 (i32.const 4000)) | |
| (global $foo_start i32 (i32.const 4000)) | |
| ;; CHECK: (global $foo_stop i32 (i32.const 4015)) | |
| (global $foo_stop i32 (i32.const 4015)) | |
| ;; CHECK: (memory $mem 10 10) | |
| (memory $mem 10 10) | |
| ;; CHECK: (data $data1 (i32.const 1000) "") | |
| (data $data1 (i32.const 1000) "hello world") | |
| ;; CHECK: (data $data2 "hello \00\00\00\00\00\00\00\00\00 world") | |
| (data $data2 "hello DELETE ME world") | |
| ;; CHECK: (data $data3 (i32.const 3000) "") | |
| (data $data3 (i32.const 3000) "some deps") | |
| (export "__start_em_asm" (global $em_asm_start)) | |
| (export "__stop_em_asm" (global $em_asm_stop)) | |
| (export "__start_em_js" (global $em_js_start)) | |
| (export "__stop_em_js" (global $em_js_stop)) | |
| (export "__start_em_lib_deps" (global $em_lib_deps_start)) | |
| (export "__stop_em_lib_deps" (global $em_lib_deps_stop)) | |
| ;; CHECK: (export "__start_foo" (global $foo_start)) | |
| (export "__start_foo" (global $foo_start)) | |
| ;; CHECK: (export "__stop_foo" (global $foo_stop)) | |
| (export "__stop_foo" (global $foo_stop)) | |
| ;; CHECK: (func $meminit | |
| ;; CHECK-NEXT: (memory.init $data2 | |
| ;; CHECK-NEXT: (i32.const -1294967296) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 21) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| (func $meminit | |
| (memory.init $mem $data2 | |
| (i32.const 3000000000) | |
| (i32.const 0) | |
| (i32.const 21) | |
| ) | |
| ) | |
| ) |