6 C COMPilEr
content of bug
The following compile error occurs.
error: unable to find a register to spill in class
This bug may occur when all the following conditions are filled.
・ Compiled with REGULAR Model or MIDDLE Model.
・ The pointer argument is passed by %r3 register to a function.
・ Referencing the pointer argument passed by %r3 register in a function.
See the compiler package manual "registers for passing arguments" at "6.4.3 Method of Using Registers"
about the allocation of registers for passing arguments.
correspondence method
Don't pass the pointer argument which is cause of the error by %r3 register.
So change the order of parameters, or add the dummy argument.
reappearance code
No.4
void sub( int arg1, int arg2, int arg3, long *arg4 )
{
static long long int num ;
num = *arg4 ;
}
※ In this case the pointer argument 'arg4' is passed by %r3.
So for example, add the dummy argument as follows,
void sub( int arg1, int arg2, int arg3, int dummy, long *arg4 )
{
static long long int num ;
num = *arg4 ;
}
cause
This is compiler internal error when failing to secure registers needed to process.
6-18
EPSOn
(C COMPilEr PaCkagE fOr S1C17 faMily) (Ver. 1.5.0)
S5U1C17001C ManUal
Need help?
Do you have a question about the S5U1C17001C and is the answer not in the manual?
Questions and answers