A bug reported against SQLite appears to be a case of GCC 4.3.0 miscompiling a single line of code within SQLite. The problem only appears with -O2 or -Os. The problem goes away if we add the -fno-tree-vrp option. The original bug report can be found at
http://www.sqlite.org/cvstrac/tktview?tn=2469 The line of code that is miscompiled is found in the source file named vdbe.c (version 1.635) on line 4309. 4308 for(j=0; j<nRoot; j++){ 4309 aRoot[j] = pTos[-j].u.i; 4310 } 4311 aRoot[j] = 0; By setting a breakpoint on line 4311 and examining the values of aRoot[] one finds that all nRoot entries of aRoot[] are being filled from pTos[0].u.i instead of being filled from pTos[0].u.i, pTos[-1].u.i, pTos[-2].u.i, and so forth as the loop intends. I will be happy to supply any additional debugging information that might help in fixing this problem (such as vdbe.s files compiled both with and without -fno-tree-vrp). I regret that I have so far been unable to replicate this problem in a small test program. -- Summary: GCC 4.3.0 with -ftree-vrp miscompiles a single line of code in SQLite Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: drh at sqlite dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32575