Path: blob/main/crates/test-programs/src/bin/dwarf_codegen_optimized_wasm_optimized.cc
3067 views
//! flags = ['-O2']12// clang-format off3// clang -o codegen-optimized.wasm -target wasm32-unknown-wasip1 -g -O2 codegen-optimized.cpp45// Make sure to adjust the break locations in lldb.rs when modifying this test.6#define BREAKPOINT7#define NOINLINE __attribute__((noinline))89NOINLINE int NoInlineSideEffect() {10volatile int x = 1;11return x;12}13NOINLINE int NoInlineSideEffect_TwoArgs(int a, int b) {14volatile int x[] = {1, 2, 3};15return x[(a + b) >> 16];16}1718NOINLINE int VariableRanges_SingleVRegBrokenUp(int b) {19if (b < 0) {20__builtin_trap(); // This will split the live range of 'b'.21}22NoInlineSideEffect(); BREAKPOINT;23return b;24}2526NOINLINE int VariableRanges_SingleVRegRegReused(int b) {27int t = b & 420;28NoInlineSideEffect_TwoArgs(t, b); BREAKPOINT;29return 0;30}3132NOINLINE void InitializeTest(volatile int *x) {33*x = 42; // Have something to set a breakpoint on.34}3536int main(int argc, char *argv[]) {37volatile int x;38InitializeTest(&x);39VariableRanges_SingleVRegBrokenUp(x++);40VariableRanges_SingleVRegRegReused(x++);41return 0;42}434445