namespace; include rt, run; // new stamps the header, so an o3 caller and an ordinary caller both see a type. // the call itself is not a boundary: no fatten, and the callee's prologue does not run. struct node { int v; node* c; }; unchecked o3 node* leaf(int v) { node* n = rt.new(node); n.v = v; n.c = 0; return n; } unchecked o3 int inner() { node* n = leaf(7); int* p = n; return p[-1]; } unchecked o3 int add(int a, int b) { return a + b; } unchecked o3 int nest(int n) { if (n == 0) return 0; return n + nest(n - 1); } unchecked fn main() { node* n = leaf(4); int* p = n; rt.put_n(p[-1] < 0); rt.put_c(' '); rt.put_n(inner() < 0); rt.put_c(' '); rt.put_n(n.v); rt.put_c(' '); rt.put_n(add(20, 3)); rt.put_c(' '); rt.put_n(nest(10)); rt.put_c(' '); run.tprint(rt.typeof_obj(n)); rt.put_c(10); return 0; }