diff options
Diffstat (limited to 'test/regression/volatile3.c')
-rw-r--r-- | test/regression/volatile3.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/test/regression/volatile3.c b/test/regression/volatile3.c new file mode 100644 index 00000000..2999609a --- /dev/null +++ b/test/regression/volatile3.c @@ -0,0 +1,77 @@ +/* Expansion of read-modify-write operations on volatiles */ + +#include <stdio.h> + +volatile int x; +volatile unsigned char c; + +int main() +{ + x = 0; + printf("x = %d\n", x); + + x++; + printf("x = %d\n", x); + printf ("x++ = %d\n", x++); + printf("x = %d\n", x); + + x += 42; + printf("x = %d\n", x); + printf ("x += 12 = %d\n", x += 12); + printf("x = %d\n", x); + + x--; + printf("x = %d\n", x); + printf ("x-- = %d\n", x--); + printf("x = %d\n", x); + + x -= 7; + printf("x = %d\n", x); + printf ("x -= 3 = %d\n", x -= 3); + printf("x = %d\n", x); + + ++x; + printf("x = %d\n", x); + printf ("++x = %d\n", ++x); + printf("x = %d\n", x); + + --x; + printf("x = %d\n", x); + printf ("--x = %d\n", --x); + printf("x = %d\n", x); + + c = 0; + printf("c = %d\n", c); + + c++; + printf("c = %d\n", c); + printf ("c++ = %d\n", c++); + printf("c = %d\n", c); + + c += 250; + printf("c = %d\n", c); + printf ("c += 42 = %d\n", c += 42); + printf("c = %d\n", c); + + c--; + printf("c = %d\n", c); + printf ("c-- = %d\n", c--); + printf("c = %d\n", c); + + c -= 7; + printf("c = %d\n", c); + printf ("c -= 3 = %d\n", c -= 3); + printf("c = %d\n", c); + + ++c; + printf("c = %d\n", c); + printf ("++c = %d\n", ++c); + printf("c = %d\n", c); + + --c; + printf("c = %d\n", c); + printf ("--c = %d\n", --c); + printf("c = %d\n", c); + + return 0; +} |