/*
 *  Print a sum of pre/post increment and decrement operations on
 *  the same value.  Ensures that temporary results are not incorrectly
 *  bound to the variable register (each value needs a temporary register
 *  because it may be further modified).
 */

/*===
19
===*/

x = 1;

print(
(++x) /* 2 */
+
(x++) /* 2 */
+
x     /* 3 */
+
(++x) /* 4 */
+
(--x) /* 3 */
+
(x--) /* 3 */
+
x     /* 2 */

      /* = 19 */
);

