Menu

#2761 FATAL ICE: Symbol in register, but no register assigned.

closed-fixed
None
redundancy elimination
5
2018-06-15
2018-06-14
No

I was happily compiling FUZIX with #10438, when i decided to update to today's #10444:

~/FUZIX/Applications/V7/cmd$ sdcc -mz80 -I/opt/fcc/include/ -c ed.c
...
ed.c:834: error 9: FATAL Compiler Internal Error in file 'gen.c' line number '1618' : Symbol in register, but no register assigned.
Contact Author with source code
Symbol iTemp4 at ic 7.
ed.c:834: error 9: FATAL Compiler Internal Error in file 'gen.c' line number '1618' : Symbol in register, but no register assigned.
Contact Author with source code
Symbol iTemp4 at ic 7.
ed.c:834: error 9: FATAL Compiler Internal Error in file 'gen.c' line number '605' : code generator internal error
Contact Author with source code
Caught signal 11: SIGSEGV

$ sdcc -v
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.7.1 #10443 (Linux)
published under GNU General Public License (GPL)

it says #10443 while it should say #10444.

To get the include in /opt/fcc/include/ , you need to build FUZIX ltools (see root's Makefile).

Discussion

  • Paolo Pisati

    Paolo Pisati - 2018-06-14

    Ok, i bisected it down to #10442: that is the revision that introduced the above ICE - hope that helps.

     
  • Alan Cox

    Alan Cox - 2018-06-14

    BTW it's helpful if you run the app through sdcc as a C pre-processor and capture the pre-processor output and attach it. That allows the maintainers to just feed it into sdcc and debug it without having the relevant environment.

     
  • Philipp Klaus Krause

    Small code sample to reproduce this issue:

    int *dot;
    int *dol;
    int fchange;
    
    void rdelete(int *ad1, int *ad2)
    {
        register int  *a1, *a2, *a3;
    
        a1 = ad1;
        a2 = ad2+1;
        a3 = dol;
        dol -= a2 - a1;
        do {
            *a1++ = *a2++;
        } while (a2 <= a3);
        a1 = ad1;
        if (a1 > dol)
            a1 = dol;
        dot = a1;
        fchange = 1;
    }
    

    Philipp

     
  • Philipp Klaus Krause

    • Category: other --> Z80
     
  • Philipp Klaus Krause

    The small reproduce compiles fine for stm8 and mcs51. This seems to be a z80-specific issue; probably a preexisting one triggered by the changes in [10442].

    Philipp

     
  • Philipp Klaus Krause

    • assigned_to: Philipp Klaus Krause
    • Category: Z80 --> redundancy elimination
     
  • Philipp Klaus Krause

    • status: open --> closed-fixed
     
  • Philipp Klaus Krause

    Fixed in [r10445].

    Philipp

     

Log in to post a comment.

Auth0 Logo