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

            Bug ID: 89149
           Summary: Out of bounds array access not detected as ill-formed
                    in a constant expression context in some cases
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yaghmour.shafik at gmail dot com
  Target Milestone: ---

Given the following C++ example:

void foo() {
    constexpr char c1 = 
      (&(&"abc"[2])[-1])[-3];
    constexpr char c2 = 
      (&(&(&"abc"[2])[-1])[-3])[4];
}

Both declarations should be ill-formed since we have out of bounds array access
in a constant expression context. gcc correctly produces a diagnostic for c1
but not for c2. See live godbolt:

https://godbolt.org/z/z7MrES

Both clang and icc produce a diagnostic for both cases and as indicated here so
does EDG https://twitter.com/zygoloid/status/1090863346016907264

Reply via email to