title: C optimization breaks algorithm
body: <p>I am programming an algorithm that contains 4 nested for loops.  The problem is at at each level a pointer is updated.  The innermost loop only uses 1 of the pointers.  The algorithm does a complicated count.  When I include a debugging statement that logs the combination of the indexes and the results of the count I get the correct answer. When the debugging statement is omitted, the count is incorrect.  The program is compiled with the -O3 option on gcc. Why would this happen?</p>