Skip to content

R_SUBMMX not handled in SPILLING_CREATE_STORE

Summary

package rtl-extra compilation fails for trunk x86_64-linux when using OPT="-n -gl -CriotR -O4"

System Information

  • Operating system:
  • Bug discovered on gcc122 x86_64-linux test machine
  • Processor architecture:
  • x86-64
  • Compiler version:
  • trunk
  • Device:

Steps to reproduce

make -C rtl clean all OPT="-n -gl -CriotR -O4"
followed by
make -C packages clean all OPT="-n -gl -CriotR -O4"

Example Project

Given above.

What is the current bug behavior?

[muller@gcc121 fpcsrc]$ make -C packages clean all OPT="-n -gl -CriotR -O4" FPC=`pwd`/compiler/ppcx64 FPMAKEOPT=-I
make: Entering directory `/home/muller/pas/gitlab-fpc-source/packages'
make -C fpmkunit clean_bootstrap
make[1]: Entering directory `/home/muller/pas/gitlab-fpc-source/packages/fpmkunit'
/usr/bin/rm -rf units_bs
make[1]: Leaving directory `/home/muller/pas/gitlab-fpc-source/packages/fpmkunit'
./fpmake clean -I --localunitdir=.. --os=linux --cpu=x86_64 -o -Cg -o -Fl/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -o -n -o -gl -o -CriotR -o -O4 -o -dx86_64 --compiler=/home/muller/pas/trunk/fpcsrc/compiler/ppcx64 -bu
./fpmake compile -I --localunitdir=.. --os=linux --cpu=x86_64 -o -Cg -o -Fl/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -o -n -o -gl -o -CriotR -o -O4 -o -dx86_64 --compiler=/home/muller/pas/trunk/fpcsrc/compiler/ppcx64 -bu
Start compiling package a52 for target x86_64-linux.
(1002) Target OS: Linux for x86-64
(3104) Compiling a52/src/a52.pas
.....
(2027) User defined: Compile mmatimp.inc for Tmatrix2_double
mmatimp.inc(702,13) Fatal: Internal error 2005060404
Fatal: (1018) Compilation aborted
External command "/home/muller/pas/trunk/fpcsrc/compiler/ppcx64 -Tlinux -FUrtl-extra/units/x86_64-linux/ -Fu/home/muller/pas/gitlab-fpc-source/rtl/units/x86_64-linux/ -Furtl-extra/src/inc -Furtl-extra/src/unix -Firtl-extra/src/inc -Firtl-extra/src/unix -Firtl-extra/src/linux -Fl/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -Cg -Fl/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -n -gl -CriotR -O4 -dx86_64 -Sc -viq rtl-extra/BuildUnit_rtl_extra.pp" failed with exit code 256. Console output:
Target OS: Linux for x86-64
Compiling rtl-extra/BuildUnit_rtl_extra.pp
Compiling ./rtl-extra/src/inc/real48utils.pp
Compiling ./rtl-extra/src/inc/ucomplex.pp
Compiling ./rtl-extra/src/inc/matrix.pp
User defined: Compile mvecimp.inc for Tvector2_single
User defined: Compile mvecimp.inc for Tvector2_double
User defined: Compile mvecimp.inc for Tvector2_extended
User defined: Compile mvecimp.inc for Tvector3_single
User defined: Compile mvecimp.inc for Tvector3_double
User defined: Compile mvecimp.inc for Tvector3_extended
User defined: Compile mvecimp.inc for Tvector4_single
User defined: Compile mvecimp.inc for Tvector4_double
User defined: Compile mvecimp.inc for Tvector4_extended
User defined: Compile mmatimp.inc for Tmatrix2_single
User defined: Compile mmatimp.inc for Tmatrix2_double
mmatimp.inc(702,13) Fatal: Internal error 2005060404
Fatal: Compilation aborted

The installer encountered the following error:
Compilation of "BuildUnit_rtl_extra.pp" failed
make: *** [all] Error 1
make: Leaving directory `/home/muller/pas/gitlab-fpc-source/packages'


Using gppcx64:

Starting program: /home/muller/pas/trunk/fpcsrc/compiler/ppcx64 -Tlinux -FUrtl-extra/units/x86_64-linux/ -Fu/home/muller/pas/gitlab-fpc-source/rtl/units/x86_64-linux/ -Furtl-extra/src/inc -Furtl-extra/src/unix -Firtl-extra/src/inc -Firtl-extra/src/unix -Firtl-extra/src/linux -Fl/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -Cg -Fl/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -n -gl -CriotR -O4 -dx86_64 -Sc -viq rtl-extra/BuildUnit_rtl_extra.pp
(1002) Target OS: Linux for x86-64
(3104) Compiling rtl-extra/BuildUnit_rtl_extra.pp
(3104) Compiling ./rtl-extra/src/inc/matrix.pp
(2027) User defined: Compile mvecimp.inc for Tvector2_single
(2027) User defined: Compile mvecimp.inc for Tvector2_double
(2027) User defined: Compile mvecimp.inc for Tvector2_extended
(2027) User defined: Compile mvecimp.inc for Tvector3_single
(2027) User defined: Compile mvecimp.inc for Tvector3_double
(2027) User defined: Compile mvecimp.inc for Tvector3_extended
(2027) User defined: Compile mvecimp.inc for Tvector4_single
(2027) User defined: Compile mvecimp.inc for Tvector4_double
(2027) User defined: Compile mvecimp.inc for Tvector4_extended
(2027) User defined: Compile mmatimp.inc for Tmatrix2_single
(2027) User defined: Compile mmatimp.inc for Tmatrix2_double

Breakpoint 2, INTERNALERROR (I=2005060404) at verbose.pas:592
592             UpdateStatus;
(gdb) bt
#0  INTERNALERROR (I=2005060404) at verbose.pas:592
#1  0x00000000004ffb1a in SPILLING_CREATE_STORE (R=(TREGISTERHIGHENUM), REF=...) at x86/aasmcpu.pas:4898
#2  0x0000000000507a71 in DO_SPILL_WRITTEN (this=0x7ffff7f3ebe0, LIST=0x7ffff614cdc0, POS=0x7ffff6161d60, SPILLTEMP=..., TEMPREG=(TREGISTERHIGHENUM), ORGSUPREG=32) at rgobj.pas:2618
#3  0x00000000005088ef in INSTR_SPILL_REGISTER (this=0x7ffff7f3ebe0, LIST=0x7ffff614cdc0, INSTR=0x7ffff6161d60, R=..., SPILLTEMPLIST=...) at rgobj.pas:2976
#4  0x000000000050787f in SPILL_REGISTERS (this=0x7ffff7f3ebe0, LIST=0x7ffff614cdc0, HEADERTAI=0x7ffff60d3c00) at rgobj.pas:2574
#5  0x0000000000502e7a in DO_REGISTER_ALLOCATION (this=0x7ffff7f3ebe0, LIST=0x7ffff614cdc0, HEADERTAI=0x7ffff60d3c00) at rgobj.pas:659
#6  0x00000000004edb7d in DO_REGISTER_ALLOCATION (this=0x7ffff6b36540, LIST=0x7ffff614cdc0, HEADERTAI=0x7ffff60d3c00) at cgobj.pas:903
#7  0x0000000000594938 in GENERATE_CODE (this=0x7ffff6827a50) at psub.pas:2163
#8  0x0000000000593669 in GENERATE_CODE_TREE (this=0x7ffff6827a50) at psub.pas:1622
#9  0x0000000000595cd5 in READ_PROC_BODY (OLD_CURRENT_PROCINFO=0x7ffff6824db0, PD=0x7ffff6869c40) at psub.pas:2636
#10 0x0000000000596421 in READ_PROC (ISCLASSMETHOD=false, USEFWPD=0x0, ISGENERIC=false) at psub.pas:2846
#11 0x0000000000596aa3 in READ_DECLARATIONS (ISLIBRARY=false) at psub.pas:3078
#12 0x00000000005904b8 in BLOCK (ISLIBRARY=false) at psub.pas:381
#13 0x0000000000595692 in PARSE_BODY (this=0x7ffff6824db0) at psub.pas:2459
#14 0x00000000006c4faf in PROC_UNIT () at pmodules.pas:1123
#15 0x00000000005784ce in COMPILE (FILENAME=...) at parser.pas:402
#16 0x00000000005675e7 in LOADPPU (this=0x7ffff78bb690) at fppu.pas:2281
#17 0x00000000006c34a3 in LOADUNITS (PRESERVEST=0x0) at pmodules.pas:541
#18 0x00000000006c49a9 in PROC_UNIT () at pmodules.pas:1001
#19 0x00000000005784ce in COMPILE (FILENAME=...) at parser.pas:402
#20 0x00000000004388eb in COMPILE (CMD=0x0) at compiler.pas:291
#21 0x000000000040042a in main () at pp.pas:301
(gdb) f 1
#1  0x00000000004ffb1a in SPILLING_CREATE_STORE (R=(TREGISTERHIGHENUM), REF=...) at x86/aasmcpu.pas:4898
4898                      internalerror(2005060404);
(gdb) p R
$9 = (TREGISTERHIGHENUM)
(gdb) p getsubreg(R)
$10 = R_SUBMMX

What is the expected (correct) behavior?

Successful compilation

Relevant logs and/or screenshots

Possible fixes

I don't know enough the MMX instruction to be able to propose a fix here...

Edited by Pierre Muller
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information