It seems that the code is unaware that emergency_buffer is a multidimensional
array and so prohibits arithmetic like base+sizeof (emergency_buffer) as
exceeding the array bounds.

Dirk wrote in private mail:

"This seems to be caused by pass 028t.ccp1 because during vrp1 the code looks 
like: 

<L0>:;
  if (ptr_3 < &emergency_buffer[0][2048]) goto <L1>; else goto <L2>;

which is what it is warning about."


-- 
           Summary: incorrect array bounds warning on multi-dimensional
                    arrays
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bje at gcc dot gnu dot org
  GCC host triplet: powerpc-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30636

Reply via email to