https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105420
Bug ID: 105420 Summary: Bogus -Warray-bounds with non-compile time-constant variable Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: byteslice at airmail dot cc Target Milestone: --- Created attachment 52894 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52894&action=edit Reduced example On gcc 12.0.1 20220413 (Fedora 36 Beta), with c++ -O1 -fexpensive-optimizations -ftree-vrp -Werror=array-bounds, the attachment fails to compile, with the following message: <source>: In function 'void Initialize(int)': <source>:9:53: error: array subscript -1 is below array bounds of 'int [8]' [-Werror=array-bounds] 9 | int phys_core = VirtualToPhysicalCoreMap[virt_core]; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ <source>:2:5: note: while referencing 'VirtualToPhysicalCoreMap' 2 | int VirtualToPhysicalCoreMap[8]; | ^~~~~~~~~~~~~~~~~~~~~~~~ cc1plus: some warnings being treated as errors Compiler returned: 1 virt_core does not have a compile time-constant evaluation, so this warning is bogus. The bogus warning does not appear in older versions of GCC. Removing either -fexpensive-optimizations or -ftree-vrp allows compilation to succeed.