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

            Bug ID: 64452
           Summary: ICE in avr-gcc when passing struct member to varargs
                    function
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chris.foster at roames dot com.au

Created attachment 34366
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34366&action=edit
Reduced test case

Compiling the attached test case with gcc 4.8.2 (ubuntu 14.04.1 LTS) produces

$ avr-gcc -c avr-gcc-ice.c 
avr-gcc-ice.c: In function ‘foo’:
avr-gcc-ice.c:12:1: internal compiler error: in push_reload, at reload.c:1360
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


The ICE seems to be triggered by the specific combination of:
* struct layout (switching field order in A avoids the error)
* passing the structs by value (passing pointers to A avoids the error)
* passing to a varargs function (replacing the call to printf with a
  non-varargs function which accepts the same args avoids the error)

Reply via email to