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

            Bug ID: 91925
           Summary: -fpack-struct causes a decltype with template to ICE
           Product: gcc
           Version: 9.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jan at ypmania dot nl
  Target Milestone: ---

Created attachment 46959
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46959&action=edit
Minimal reproducer testcase

When compiling the given test case (which uses decltype on an expression that
needs template argument inference) with "-fpack-struct", gcc produces an
internal compiler error (segmentation fault).

$ gcc -fpack-struct test.cpp -o test.o
test.cpp:21:32: internal compiler error: Segmentation fault
   21 |   auto_var(pinTX, PinPD1(usart0));
      |                                ^
test.cpp:17:39: note: in definition of macro ‘auto_var’
   17 | #define auto_var(name, expr) decltype(expr) name = expr

Removing pack-struct makes the code compile fine, as does uncommenting the
alternative declaration on line 22 (which does not use decltype).

This is on 9.2.0 (arch linux). Using compiler explorer shows that trunk, 9.2,
9.1 have the bug, while 8.3.0 compiled this fine (with -fpack-struct).

The context is AVR embedded development, where it is common to use
-fpack-struct (and not use any standard library).

Reply via email to