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

            Bug ID: 95241
           Summary: internal compiler error: tree check: expected
                    integer_cst, have range_expr in to_wide, at
                    tree.h:5900
           Product: gcc
           Version: 10.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tab.debugteam at gmail dot com
  Target Milestone: ---

Following c++ code:

```
struct Fragment
{
        int offset;
        int length;

        constexpr Fragment(
                        int _offset,
                        int _length)
                : offset(_offset), length(_length)
        {
        }
        constexpr Fragment() :
                Fragment(0, 1) { }
};

struct Field {
        Fragment fragments[3];

        constexpr
                Field(int offset, int length)
                  : fragments{Fragment(offset, length)}
        {
        }
};

int main()
{
    auto field = Field(0, 1);
    return 0;
}
```

fails to compile with gcc 10.1 (https://godbolt.org/z/tyPB6V) and later with
error message:

```
<source>: In function 'int main()':

<source>:28:28:   in 'constexpr' expansion of 'Field(0, 1)'

<source>:28:28: internal compiler error: tree check: expected integer_cst, have
range_expr in to_wide, at tree.h:5900

   28 |     auto field = Field(0, 1);

      |                            ^
```

First spotted on gcc 10.1: https://godbolt.org/z/tyPB6V, but it's also
reproducible on latest gcc available on compiler explorer (version 11.0.0
20200511): https://godbolt.org/z/qWivJC.
I'm unable to reproduce it on gcc 9.3: https://godbolt.org/z/C2QqxA.

Reply via email to