Remove an unnecessary temporary variable for clarity of presentation in

a loop that GCC 4.2.0 is miscompiling.  Ticket #2469.  GCC 4.2.0 miscompiles
this loop regardless of whether or not the temporary variable is used, but
by removing the variable, we hope to make it easier to explain the problem
to GCC maintainers.  The error only appears if -ftree-vrp is used (which
is turned on by -O2). (CVS 4150)

FossilOrigin-Name: 35ae398bd37e4abbe362b0b780fc51153145b43d
This commit is contained in:
drh
2007-07-01 21:18:40 +00:00
parent 503028d61a
commit 12e8dcfbf6
3 changed files with 10 additions and 11 deletions
+7 -7
View File
@@ -1,5 +1,5 @@
C Change\sOS/2\sversion\sof\ssqlite3Os2FullPathname()\sfor\scross-compiler\scompatibility:\n-\sallocate\szBuff\son\sdemand\s(restricted\sstack\sspace\son\sold\scompilers)\n-\s2\sbytes\sin\szDrive\sin\sinclude\s'\\0'\n-\spass\sdrive\snumber\sto\sDosQueryCurrentDir()\sinstead\sof\s0\sto\smake\sEMX\swork\n-\szFull\sdoes\snot\sneed\sto\sbe\spreallocated\s(CVS\s4149)
D 2007-07-01T15:41:03
C Remove\san\sunnecessary\stemporary\svariable\sfor\sclarity\sof\spresentation\sin\na\sloop\sthat\sGCC\s4.2.0\sis\smiscompiling.\s\sTicket\s#2469.\s\sGCC\s4.2.0\smiscompiles\nthis\sloop\sregardless\sof\swhether\sor\snot\sthe\stemporary\svariable\sis\sused,\sbut\nby\sremoving\sthe\svariable,\swe\shope\sto\smake\sit\seasier\sto\sexplain\sthe\sproblem\nto\sGCC\smaintainers.\s\sThe\serror\sonly\sappears\sif\s-ftree-vrp\sis\sused\s(which\nis\sturned\son\sby\s-O2).\s(CVS\s4150)
D 2007-07-01T21:18:40
F Makefile.in 0c0e53720f658c7a551046442dd7afba0b72bfbe
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -138,7 +138,7 @@ F src/update.c 6b10becb6235ea314ed245fbfbf8b38755e3166e
F src/utf.c 01b2aba02b10d12903e9e1ff897215c9faf6b662
F src/util.c 9e81d417fc60bd2fe156f8f2317aa4845bc6cc90
F src/vacuum.c 8bd895d29e7074e78d4e80f948e35ddc9cf2beef
F src/vdbe.c 32f39e9cab8a6ef64ad392711396d65ae89fc790
F src/vdbe.c a96ce3799f037b8f4e185a01823072320fd9ccb3
F src/vdbe.h 001c5b257567c1d3de7feb2203aac71d0d7b16a3
F src/vdbeInt.h c3514903cad9e36d6b3242be20261351d09db56c
F src/vdbeapi.c 7930b9a188ab385287ca3eb3840af7225cb43549
@@ -517,7 +517,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 6432bbe1c1db1d31bd0057d99a9d6b6a428d8ffc
R 2986768553c0040e902823ab3782ee13
U pweilbacher
Z f8445765174dacd892cb83b5501c5290
P cc2105176563c352a6dccef89a429a76b6f3adf5
R 5ab68d3d21b1ac3447f261afad19b81e
U drh
Z cc964195494be17bba33eb2f44687e4f
+1 -1
View File
@@ -1 +1 @@
cc2105176563c352a6dccef89a429a76b6f3adf5
35ae398bd37e4abbe362b0b780fc51153145b43d
+2 -3
View File
@@ -43,7 +43,7 @@
** in this file for details. If in doubt, do not deviate from existing
** commenting and indentation practices when changing or adding code.
**
** $Id: vdbe.c,v 1.635 2007/06/27 15:53:35 danielk1977 Exp $
** $Id: vdbe.c,v 1.636 2007/07/01 21:18:40 drh Exp $
*/
#include "sqliteInt.h"
#include "os.h"
@@ -4306,8 +4306,7 @@ case OP_IntegrityCk: {
pnErr = &p->aMem[j];
assert( (pnErr->flags & MEM_Int)!=0 );
for(j=0; j<nRoot; j++){
Mem *pMem = &pTos[-j];
aRoot[j] = pMem->u.i;
aRoot[j] = pTos[-j].u.i;
}
aRoot[j] = 0;
popStack(&pTos, nRoot);