https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106096

--- Comment #8 from chenglulu <chenglulu at loongson dot cn> ---
(In reply to Xi Ruoyao from comment #6)
> (In reply to chenglulu from comment #5)
> > Created attachment 53213 [details]
> > Modify the allocation order of caller saved registers.
> 
> I think we need to completely prevent LARCH_PROLOGUE_TEMP from being used
> for sibcall:
> 
> diff --git a/gcc/config/loongarch/loongarch.h
> b/gcc/config/loongarch/loongarch.h
> index 4d107a42209..f9de9a6e4fb 100644
> --- a/gcc/config/loongarch/loongarch.h
> +++ b/gcc/config/loongarch/loongarch.h
> @@ -511,7 +511,7 @@ enum reg_class
>  #define REG_CLASS_CONTENTS                                             \
>  {                                                                      \
>    { 0x00000000, 0x00000000, 0x00000000 },      /* NO_REGS  */          \
> -  { 0x001ff000, 0x00000000, 0x00000000 },      /* SIBCALL_REGS  */     \
> +  { 0x001fd000, 0x00000000, 0x00000000 },      /* SIBCALL_REGS  */     \
>    { 0xff9ffff0, 0x00000000, 0x00000000 },      /* JIRL_REGS  */        \
>    { 0xfffffffc, 0x00000000, 0x00000000 },      /* CSR_REGS  */         \
>    { 0xffffffff, 0x00000000, 0x00000000 },      /* GR_REGS  */          \
> 
> Or even if LARCH_PROLOGUE_TEMP is less preferred, the register allocator may
> still use it for sibcall and blow something up again.
> 
This solved my doubt. ^v^

Reply via email to