[Bug target/81426] [SH]: unable to find a register to spill in class 'R0_REGS' when building webkit2gtk
glaubitz at physik dot fu-berlin.de
gcc-bugzilla@gcc.gnu.org
Mon Oct 16 18:33:24 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426
--- Comment #11 from John Paul Adrian Glaubitz <glaubitz at physik dot fu-berlin.de> ---
Created attachment 56123
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56123&action=edit
Preprocessed source from building GHC with gcc-13
This is still present in gcc-13, I just ran into it while cross-building the
Haskell compiler GHC for sh4:
"inplace/bin/ghc-stage1" -optc-Wall -optc-Wall -optc-Wextra
-optc-Wstrict-prototypes -optc-Wmissing-prototypes -optc-Wmissing-declarations
-optc-Winline -optc-Wpointer-ari
th -optc-Wmissing-noreturn -optc-Wnested-externs -optc-Wredundant-decls
-optc-Wno-aggregate-return -optc-Wno-unused-label -optc-DNOSMP
-optc-fno-strict-aliasing -optc-fno-
common -optc-Irts/dist-install/build/./autogen
-optc-Irts/include/../dist-install/build/include -optc-Irts/include/.
-optc-Irts/. -optc-DCOMPILING_RTS -optc-DFS_NAMESPACE=
rts -optc-Werror=unused-but-set-variable -optc-Wno-error=inline -optc-O2
-optc-fomit-frame-pointer -optc-g -optc-fno-omit-frame-pointer -optc-O0
-optc-g3 -optc-DRtsWay=\"r
ts_thr_debug\" -optc-ffunction-sections -optc-fdata-sections -static
-optc-DTHREADED_RTS -optc-DDEBUG -H32m -O -lffi -optl-pthread -O0 -H64m -Wall
-this-unit-id rts -opt
c-DNOSMP -dcmm-lint -package-env - -i -irts -irts/dist-install/build
-Irts/dist-install/build -irts/dist-install/build/./autogen
-Irts/dist-install/build/./autogen -Ir
ts/include/../dist-install/build/include -Irts/include/. -Irts/.
-optP-DCOMPILING_RTS -optP-DFS_NAMESPACE=rts -O2 -Wcpp-undef -O0
-Wnoncanonical-monad-instances
-c rts/ProfilerReport.c -o rts/dist-install/build/ProfilerReport.thr_debug_o
rts/sm/NonMovingMark.c: In function ‘mark_closure’:
rts/sm/NonMovingMark.c:1763:1: error:
error: unable to find a register to spill in class ‘R0_REGS’
1763 | }
| ^
|
1763 | }
| ^
rts/sm/NonMovingMark.c:1763:1: error: error: this is the insn:
|
1763 | }
| ^
(insn 1553 3768 1554 115 (parallel [
(set (subreg:SI (reg:QI 7 r7 [803]) 0)
(unspec_volatile:SI [
(mem/v:QI (reg/f:SI 3 r3 [orig:299 _160 ] [299]) [-1
S1 A8])
(reg:QI 800 [ MEM[(struct StgStack *)_313].marking ])
(reg:QI 5 r5 [orig:802 nonmovingMarkEpoch ] [802])
] UNSPECV_CMPXCHG_1))
(set (mem/v:QI (reg/f:SI 3 r3 [orig:299 _160 ] [299]) [-1 S1 A8])
(unspec_volatile:QI [
(const_int 0 [0])
] UNSPECV_CMPXCHG_2))
(set (reg:SI 147 t)
(unspec_volatile:SI [
(const_int 0 [0])
] UNSPECV_CMPXCHG_3))
(clobber (scratch:SI))
(clobber (reg:SI 0 r0))
(clobber (reg:SI 1 r1))
]) "rts/include/stg/SMP.h":325:0: error:
5 405 {atomic_compare_and_swapqi_soft_gusa}
(expr_list:REG_DEAD (reg:QI 5 r5 [orig:802 nonmovingMarkEpoch ] [802])
(expr_list:REG_DEAD (reg:QI 800 [ MEM[(struct StgStack
*)_313].marking ])
(expr_list:REG_DEAD (reg/f:SI 3 r3 [orig:299 _160 ] [299])
(expr_list:REG_UNUSED (reg:SI 147 t)
(expr_list:REG_UNUSED (reg:SI 1 r1)
(expr_list:REG_UNUSED (reg:SI 0 r0)
(nil))))))))
rts/sm/NonMovingMark.c:1763:0: error:
confused by earlier errors, bailing out
|
1763 | }
| ^
Attaching the preprocessed source for that.
More information about the Gcc-bugs
mailing list