On Sat, Jun 21, 2025 at 2:12 PM Takayuki 'January June' Suwa
<[email protected]> wrote:
>
> That hook has since been deprecated
> (commit a670ebde3995481225ec62b29686ec07a21e5c10) and has led to incorrect
> results on Xtensa:
>
> /* example */
> #define <stdint.h>
> uint32_t __attribute__((noinline)) test0(uint32_t a, uint16_t b) {
> return a + b;
> }
> uint32_t __attribute__((noinline)) test1(uint32_t a, uint32_t b) {
> return test0(a, b);
> }
>
> ;; before (-mabi=call0)
> test0:
> add.n a2, a3, a2
> ret.n
> test1:
> sext a3, a3, 15 ;; NG, do not sign-extend
> j.l test0, a9
>
> ;; after (-mabi=call0)
> test0:
> extui a3, a3, 0, 16 ;; OK
> add.n a2, a3, a2
> ret.n
> test1:
> j.l test0, a9
>
> With this patch, the result is consistent with other targets such as
> AArch64.
>
> gcc/ChangeLog:
>
> * config/xtensa/xtensa.cc
> (TARGET_PROMOTE_PROTOTYPES, TARGET_PROMOTE_FUNCTION_MODE):
> Remove.
> ---
> gcc/config/xtensa/xtensa.cc | 5 -----
> 1 file changed, 5 deletions(-)
This results in a bunch of ICEs with the following backtrace:
libstdc++-v3/src/filesystem/ops.cc:780:29: internal compiler error: in
expand_call, at calls.cc:3930
780 | return fs::equiv_files(p1.c_str(), st1, p2.c_str(), st2, ec);
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x1fb63ff internal_error(char const*, ...)
gcc/diagnostic-global-context.cc:517
0x969aa8 fancy_abort(char const*, int, char const*)
gcc/diagnostic.cc:1803
0x76de1d expand_call(tree_node*, rtx_def*, int)
gcc/calls.cc:3930
0xe7dd2e expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
gcc/expr.cc:12479
0xe89bf7 expand_expr(tree_node*, rtx_def*, machine_mode, expand_modifier)
gcc/expr.h:323
0xe89bf7 store_expr(tree_node*, rtx_def*, int, bool, bool)
gcc/expr.cc:6645
0xe8b7df expand_assignment(tree_node*, tree_node*, bool)
gcc/expr.cc:6483
0xd50e9d expand_call_stmt
gcc/cfgexpand.cc:3149
0xd50e9d expand_gimple_stmt_1
gcc/cfgexpand.cc:4223
0xd50e9d expand_gimple_stmt
gcc/cfgexpand.cc:4370
0xd51b95 expand_gimple_basic_block
gcc/cfgexpand.cc:6433
0xd53d26 execute
gcc/cfgexpand.cc:7181
--
Thanks.
-- Max