https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105069
Bug ID: 105069
Summary: [12 regression] sh-elf internal compiler errors and
test failures with -Os
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: jscott at posteo dot net
Target Milestone: ---
Hi,
This seems to be a regression as compared to GCC 11. When building a bare-metal
compiler for sh-elf (Newlib or an ISO C standard library is not required), GCC
aborts with an internal compiler error:
gcc.c-torture/compile/pr104327.c:13:1: internal compiler error:
‘global_options’ are modified in local context
13 | {
| ^
There are numerous test suite failures that this causes:
gcc.c-torture/compile/pr104327.c (no special flags needed, since -Os is set via
an attribute)
and for the following, building with -Os is necessary:
gcc.c-torture/compile/pr58332.c
gcc.c-torture/compile/pr81360.c
gcc.c-torture/compile/pr84425.c
Here is a one-line reproducer:
cat bar.c
[[gnu::optimize("Os")]] int main(void) {}
$ sh-elf-gcc bar.c
bar.c:1:1: internal compiler error: ‘global_options’ are modified in local
context
1 | [[gnu::optimize("Os")]] int main(void) {}
| ^
0x7f231098a7fc __libc_start_main
../csu/libc-start.c:332
This occurs using the latest Git master on an x86_64 Debian Bullseye GNU/Linux
system. I'm not sure that this issue lies in the C frontend, so please reassign
wherever appropriate.
I discovered this issue running the test suite to upgrade the Debian gcc-sh-elf
package.