40 lines · plain
1target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"2target triple = "wasm32-unknown-unknown"3 4; Generated from this C++ code and simplified manually:5;6; int foo();7; inline int unused = foo();8;9; int foo() {10; return 42;11; }12 13$unused = comdat any14 15@unused = linkonce_odr global i32 0, comdat, align 416@_ZGV6unused = linkonce_odr global i32 0, comdat($unused), align 417@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__cxx_global_var_init, ptr @unused }]18 19define internal void @__cxx_global_var_init() comdat($unused) {20entry:21 %0 = load i8, ptr @_ZGV6unused, align 422 %1 = and i8 %0, 123 %guard.uninitialized = icmp eq i8 %1, 024 br i1 %guard.uninitialized, label %init.check, label %init.end25 26init.check: ; preds = %entry27 store i8 1, ptr @_ZGV6unused, align 428 %call = call i32 @foo()29 store i32 %call, ptr @unused, align 430 br label %init.end31 32init.end: ; preds = %init.check, %entry33 ret void34}35 36define i32 @foo() {37entry:38 ret i32 4239}40