Messages in this thread | | | Date | Wed, 27 Nov 2013 16:42:02 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH 08/14] sched: add latency tracing for -deadline tasks. |
| |
and even this works:
triton:~> cat test.c
struct foo { int a; int b; };
int litter_our_stack(void) { volatile struct foo x = { .a = 1, .b = 2 };
return x.b; }
int test_code(void) { volatile struct foo x = { .a = 1, /* .b not initialized explicitly */ };
return x.b; }
int main(void) { return litter_our_stack() + test_code(); }
triton:~> gcc -Wall -Wextra -O0 -o test test.c; ./test; echo $? 2 triton:~>
The result is 2, so x.b in test_code() got explicitly set to 0.
If it was uninitialized, not only would we expect a compiler warning, but we'd also get a result of '4'. (the two functions have the same stack depth, so 'litter_our_stack()' initializes .b to 2.)
-O0 guarantees that GCC just dumbly implements these functions without any optimizations.
Thanks,
ngo
| |