https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121036

            Bug ID: 121036
           Summary: bogus -Warray-bounds with cse-able conditions
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: amylaar at gcc dot gnu.org
            Blocks: 56456
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu

Created attachment 61840
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=61840&action=edit
reduced test case, compile with -c -Werror -Wall  -O2

$ ./xgcc -B./ ../et181.c -c -Werror -Wall  -O2 
../et181.c: In function ‘virt_to_phys’:
../et181.c:79:84: error: array subscript 4 is above array bounds of ‘const char
* const[4]’ [-Werror=array-bounds=]
   79 |               printf("%s mode %s\n", cpu->tc_p ? "User" : "Supervisor",
access_type[access]);
      |                                                                        
~~~~~~~~~~~^~~~~~~~
../et181.c:43:22: note: while referencing ‘access_type’
   43 |   const char * const access_type[] = {"write", "read", "execute",
"disassembler"};
      |                      ^~~~~~~~~~~
cc1: all warnings being treated as errors


There is no reason to assume the function would be called with an invalid enum
value.
I suppose that is an artefact from code duplication and/or jump threading.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56456
[Bug 56456] [meta-bug] bogus/missing -Warray-bounds

Reply via email to