https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82815
Bug ID: 82815 Summary: RTL frontend errors out on const_double Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: thopre01 at gcc dot gnu.org CC: dmalcolm at gcc dot gnu.org Target Milestone: --- Created attachment 42537 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42537&action=edit Testcase showing bug in read_rtx_operand read_rtx_operand in read-rtl.c assumes that a format starting with w is an integer but this can also be a const_double (see real.h). It then tries to validate the integer constant which fails and errors out with: error: invalid decimal constant "1.0e+0" The attached testcase shows the bug when compiled with: arm-none-eabi-gcc -S foo.c -march=armv7e-m -mfloat-abi=hard -mfpu=fpv5-d16 testcase_read-rtl.c The RTL is generated from: double foo (void) { return 1.0; } and dumped from arm_reorg. Similar procedure on other targets should lead to the error as well.