[PATCH] sh: Fix up __attribute__((optimize ("Os"))) handling on SH [PR105069]
Jeff Law
jeffreyalaw@gmail.com
Wed Apr 6 15:26:37 GMT 2022
On 3/31/2022 2:30 AM, Jakub Jelinek wrote:
> Hi!
>
> 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.
>
> Is the following patch ok for trunk as at least a small step forward?
>
> 2022-03-31 Jakub Jelinek <jakub@redhat.com>
>
> PR target/105069
> * config/sh/sh.opt (mdiv=): Add Save.
OK. IIRC sh isn't the only target that's broken for this stuff.
Jeff
More information about the Gcc-patches
mailing list