From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 490 invoked by alias); 1 Jan 2010 21:01:15 -0000 Received: (qmail 30917 invoked by uid 48); 1 Jan 2010 21:00:56 -0000 Date: Fri, 01 Jan 2010 21:01:00 -0000 Subject: [Bug middle-end/42577] New: array bounds false positive with -O3, goes away with -O2 X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "matt at use dot net" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-01/txt/msg00069.txt.bz2 when building ScummVM (http://scummvm.org) using GCC 4.4.1 on Ubuntu 9.10/amd64: matt@ghuang-desktop:~/src/scummvm$ g++-4.4 -Wp,-MMD,"engines/saga/.deps/animation.d",-MQ,"engines/saga/animation.o",-MP -Wall -Werror -g -ansi -W -Wno-unused-parameter -Wno-empty-body -pedantic -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-reorder -fno-strict-aliasing -Wpointer-arith -Wcast-qual -Wcast-align -Wshadow -Wimplicit -Wnon-virtual-dtor -Wwrite-strings -fno-rtti -fno-exceptions -fcheck-new -O3 -Wuninitialized -DSCUMMVM_SVN_REVISION=\"46563\" -DHAVE_CONFIG_H -DUNIX -DDATA_PATH=\"/usr/local/share/scummvm\" -DPLUGIN_DIRECTORY=\"/usr/local/lib/scummvm\" -DSDL_BACKEND -DENABLE_SCUMM=STATIC_PLUGIN -DENABLE_SCUMM_7_8 -DENABLE_HE -DENABLE_AGI=STATIC_PLUGIN -DENABLE_AGOS=STATIC_PLUGIN -DENABLE_AGOS2 -DENABLE_CINE=STATIC_PLUGIN -DENABLE_CRUISE=STATIC_PLUGIN -DENABLE_DRACI=STATIC_PLUGIN -DENABLE_DRASCULA=STATIC_PLUGIN -DENABLE_GOB=STATIC_PLUGIN -DENABLE_GROOVIE=STATIC_PLUGIN -DENABLE_GROOVIE2 -DENABLE_KYRA=STATIC_PLUGIN -DENABLE_LOL -DENABLE_LURE=STATIC_PLUGIN -DENABLE_M4=STATIC_PLUGIN -DENABLE_MADE=STATIC_PLUGIN -DENABLE_PARALLACTION=STATIC_PLUGIN -DENABLE_QUEEN=STATIC_PLUGIN -DENABLE_SAGA=STATIC_PLUGIN -DENABLE_IHNM -DENABLE_SAGA2 -DENABLE_SCI=STATIC_PLUGIN -DENABLE_SCI32 -DENABLE_SKY=STATIC_PLUGIN -DENABLE_SWORD1=STATIC_PLUGIN -DENABLE_SWORD2=STATIC_PLUGIN -DENABLE_TEENAGENT=STATIC_PLUGIN -DENABLE_TINSEL=STATIC_PLUGIN -DENABLE_TOUCHE=STATIC_PLUGIN -DENABLE_TUCKER=STATIC_PLUGIN -I. -I. -I./engines -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c engines/saga/animation.cpp cc1plus: warnings being treated as errors ./engines/saga/animation.h: In member function ‘int Saga::Anim::playCutaway(int, bool)’: ./engines/saga/animation.h:175: error: array subscript is above array bounds Relevant code in question: #define MAX_ANIMATIONS 10 AnimationData *_animations[MAX_ANIMATIONS]; void validateAnimationId(uint16 animId) { if (animId >= MAX_ANIMATIONS) { // ... } else { if (_animations[animId] == NULL) { error("validateAnimationId: animId=%i unassigned.", animId); } } } pre-processed output is attached. This bug appears to already be fixed in GCC 4.5 snapshot as on 2009-12-28. -- Summary: array bounds false positive with -O3, goes away with -O2 Product: gcc Version: 4.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: matt at use dot net GCC build triplet: x86_64-linux-unknown GCC host triplet: x86_64-linux-unknown GCC target triplet: x86_64-linux-unknown http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42577