Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/test-programs/src/bin/dwarf_codegen_optimized_wasm_optimized.cc
3067 views
1
//! flags = ['-O2']
2
3
// clang-format off
4
// clang -o codegen-optimized.wasm -target wasm32-unknown-wasip1 -g -O2 codegen-optimized.cpp
5
6
// Make sure to adjust the break locations in lldb.rs when modifying this test.
7
#define BREAKPOINT
8
#define NOINLINE __attribute__((noinline))
9
10
NOINLINE int NoInlineSideEffect() {
11
volatile int x = 1;
12
return x;
13
}
14
NOINLINE int NoInlineSideEffect_TwoArgs(int a, int b) {
15
volatile int x[] = {1, 2, 3};
16
return x[(a + b) >> 16];
17
}
18
19
NOINLINE int VariableRanges_SingleVRegBrokenUp(int b) {
20
if (b < 0) {
21
__builtin_trap(); // This will split the live range of 'b'.
22
}
23
NoInlineSideEffect(); BREAKPOINT;
24
return b;
25
}
26
27
NOINLINE int VariableRanges_SingleVRegRegReused(int b) {
28
int t = b & 420;
29
NoInlineSideEffect_TwoArgs(t, b); BREAKPOINT;
30
return 0;
31
}
32
33
NOINLINE void InitializeTest(volatile int *x) {
34
*x = 42; // Have something to set a breakpoint on.
35
}
36
37
int main(int argc, char *argv[]) {
38
volatile int x;
39
InitializeTest(&x);
40
VariableRanges_SingleVRegBrokenUp(x++);
41
VariableRanges_SingleVRegRegReused(x++);
42
return 0;
43
}
44
45