Peter Bergner via Gcc <gcc@gcc.gnu.org> wrote:
On 4/20/21 4:20 PM, Jakub Jelinek via Gcc wrote:
On Tue, Apr 20, 2021 at 03:27:08PM -0500, William Seurer via Gcc wrote:
/tmp/cc8zG8DV.s: Assembler messages:
/tmp/cc8zG8DV.s:2566: Error: unsupported relocation against r13
/tmp/cc8zG8DV.s:2570: Error: unsupported relocation against r14
[snip]
So do we need to change
+ else version (PPC)
+ {
+ void*[19] regs = void;
+ asm pure nothrow @nogc
+ {
+ "stw r13, %0" : "=m" (regs[ 0]);
+ "stw r14, %0" : "=m" (regs[ 1]);
...
+ else version (PPC64)
+ {
+ void*[19] regs = void;
+ asm pure nothrow @nogc
+ {
+ "std r13, %0" : "=m" (regs[ 0]);
+ "std r14, %0" : "=m" (regs[ 1]);
...
to "stw 13, %0" and "std 13, %0" etc. unconditionally, or
to "stw %%r13, %0" etc. under some conditions?
Yes, I think so. The "r13", etc. names are not accepted by gas unless you
use the -mregnames option. It's easier to just remove the 'r’.
which would break it on Darwin.
Either that section needs to be conditional on “version Darwin” and a
second one
general - or the existing fall-back can be used for Linux (but the comments
still stand
that there are disadvantages on PPC from using the fallback).
Iain (S)