Can't find a register in R1_REGS while reloading asm.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dave,

I've switched over to gcc-4_3-branch to do some hppa-linux libc
testing. While the gcc testsuite looks OK, modulo the builtin-math
failures (and a completely failed libgomp testsuite, likely an
environment setup issue), I can no longer build glibc.

When compiling the first function which uses the atomic.h macro, I get
the following failure in reload:
~~~
../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:220: error:
can't find a register in class 'R1_REGS' while reloading 'asm
'
dcigettext.c:1106: error: can't find a register in class 'R1_REGS'
while reloading 'asm'
dcigettext.c:1168: error: can't find a register in class 'R1_REGS'
while reloading 'asm'
dcigettext.c:1198: error: can't find a register in class 'R1_REGS'
while reloading 'asm'
../ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:220: error:
'asm' operand has impossible constraints
~~~

This is gcc/reload1.c (spill_failure) failing to find a spill for some
rtx that *needs* R1_REGS. AFAIK there is a small class of instructions
that use R1_REGS implicitly, I assume one of those is needing r1 and
can't get a use for it.

If reload was naive it could just spill/restore everything, but I
think it's trying too hard and failing.

Do you have any hints for debugging this? Will I have to turn this
macro into a function to avoid this sort of issue? I hate to take the
function call penalty.

Cheers,
Carlos.
--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux