[Bug target/105069] [12 regression] sh-elf internal compiler errors and test failures with -Os

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Apr 6 15:42:15 GMT 2022


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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:6283d5ad4779d3e5b7b2a93e76de03264a7c7cc6

commit r12-8027-g6283d5ad4779d3e5b7b2a93e76de03264a7c7cc6
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Apr 6 17:36:54 2022 +0200

    sh: Fix up __attribute__((optimize ("Os"))) handling on SH [PR105069]

    As mentioned in the PR, various tests on sh-elf ICE like:
    make check-gcc RUNTESTFLAGS="compile.exp='pr104327.c pr58332.c pr81360.c
pr84425.c'"
    FAIL: gcc.c-torture/compile/pr104327.c   -O0  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr104327.c   -O0  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr104327.c   -O1  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr104327.c   -O1  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr104327.c   -O2  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr104327.c   -O2  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr104327.c   -O3 -g  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr104327.c   -O3 -g  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr104327.c   -Os  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr58332.c   -O0  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr58332.c   -O1  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr58332.c   -O1  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr58332.c   -O2  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr58332.c   -O2  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr58332.c   -O3 -g  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr58332.c   -O3 -g  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr58332.c   -Os  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr58332.c   -Os  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr81360.c   -O0  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr81360.c   -O1  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr81360.c   -O1  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr81360.c   -O2  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr81360.c   -O2  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr81360.c   -O3 -g  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr81360.c   -O3 -g  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr81360.c   -Os  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr81360.c   -Os  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr84425.c   -O0  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr84425.c   -O1  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr84425.c   -O1  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr84425.c   -O2  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr84425.c   -O2  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr84425.c   -O3 -g  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr84425.c   -O3 -g  (test for excess errors)
    FAIL: gcc.c-torture/compile/pr84425.c   -Os  (internal compiler error:
'global_options' are modified in local context)
    FAIL: gcc.c-torture/compile/pr84425.c   -Os  (test for excess errors)
    With the following patch, none of those tests ICE anymore, though
    pr104327.c still FAILs with:
    Excess errors:
    /usr/src/gcc/gcc/testsuite/gcc.c-torture/compile/pr104327.c:6:1: error:
inlining failed in call to 'always_inline' 'bar': target specific option
mismatch
    I think that would be fixable by overriding TARGET_CAN_INLINE_P
    hook and allowing at least for always_inline changes in sh_div_str.

    2022-04-06  Jakub Jelinek  <jakub@redhat.com>

            PR target/105069
            * config/sh/sh.opt (mdiv=): Add Save.


More information about the Gcc-bugs mailing list