https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89998
Bug ID: 89998
Summary: [9 regression] AVR ICE: verify_gimple failed in
printf-return-value
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: gandalf at winds dot org
Target Milestone: ---
I get an ICE on the following code with GCC 9.0.1 20190407 (experimental)
compiled for AVR. Works in GCC 8.x. If the __flash keyword is taken out before
_str[]=("xx"), then it compiles OK.
unsigned short sprintf(char *str, const char __flash *fmt, ...)
{
__builtin_va_list args;
__builtin_va_start(args, fmt);
__builtin_va_end(args);
return 0;
}
extern char *s;
int main()
{
s+=sprintf(s, ({ static const char __flash _str[]=("xx"); _str; }));
}
# avr-gcc -v -O -mmcu=atmega1284p -c test3.c -o test3.o
Using built-in specs.
Reading specs from
/usr/local/avr/lib/gcc/avr/9.0.1/device-specs/specs-atmega1284p
COLLECT_GCC=avr-gcc
Target: avr
Configured with: ../configure --target=avr --prefix=/usr/local/avr
--disable-nls --enable-languages=c --disable-bootstrap --disable-libssp
Thread model: single
gcc version 9.0.1 20190407 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-v' '-O' '-c' '-o' 'test3.o'
'-specs=device-specs/specs-atmega1284p' '-mmcu=avr51'
/usr/local/avr/libexec/gcc/avr/9.0.1/cc1 -quiet -v -imultilib avr51
-D__AVR_ATmega1284P__ -D__AVR_DEVICE_NAME__=atmega1284p test3.c -mn-flash=2
-mno-skip-bug -quiet -dumpbase test3.c -mmcu=avr51 -auxbase-strip test3.o -O
-version -o /tmp/ccm4oBir.s
GNU C17 (GCC) version 9.0.1 20190407 (experimental) (avr)
compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version 4.0.2,
MPC version 1.1.0, isl version none
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory
"/usr/local/avr/lib/gcc/avr/9.0.1/../../../../avr/sys-include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/avr/lib/gcc/avr/9.0.1/include
/usr/local/avr/lib/gcc/avr/9.0.1/include-fixed
/usr/local/avr/lib/gcc/avr/9.0.1/../../../../avr/include
End of search list.
GNU C17 (GCC) version 9.0.1 20190407 (experimental) (avr)
compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version 4.0.2,
MPC version 1.1.0, isl version none
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 082ea327cdf9723cb24010e987b4f891
test3.c: In function 'main':
test3.c:12:5: error: non-trivial conversion at assignment
12 | int main()
| ^~~~
short unsigned int
int
_6 = 2;
during GIMPLE pass: printf-return-value
test3.c:12:5: internal compiler error: verify_gimple failed
0xc51c8b verify_gimple_in_cfg(function*, bool)
../../gcc/tree-cfg.c:5386
0xb5ff2f execute_function_todo
../../gcc/passes.c:1977
0xb60e6e execute_todo
../../gcc/passes.c:2031
Please submit a full bug report.