In the code gaffe I had with the V4 patches, where I mistakenly did: PADDI rt,ra,label@pcrel
(which the machine does not support), it was suggested that perhaps I should add an explicit (0),1 to each @pcrel relocation, so that the assembler will flag any usage where you try to combine an index register and a PC-relative offset. With this patch applied, I bootstrapped the compiler on a power8 little endian machine running Linux, and there were no regressions in the test suite. I also built both Spec 2017 rate and Spec 2006 cpu benchmarks with the compiler, and there were no regressions in the benchmarks that built previously (Spec 2017 parest_r fails in gimple, both with the original compiler and the patched version of the compiler). 2019-10-09 Michael Meissner <meiss...@linux.ibm.com> * config/rs6000/rs6000.c (print_operand_address): Add (0),1 to @pcrel to catch errant usage. Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 276758) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -13271,7 +13271,10 @@ print_operand_address (FILE *file, rtx x if (SYMBOL_REF_P (x) && !SYMBOL_REF_LOCAL_P (x)) fprintf (file, "@got"); - fprintf (file, "@pcrel"); + /* Specifically add (0),1 to catch uses where a @pcrel was added to a an + address with a base register, since the hardware does not support + adding a base register to a PC-relative address. */ + fprintf (file, "@pcrel(0),1"); } else if (SYMBOL_REF_P (x) || GET_CODE (x) == CONST || GET_CODE (x) == LABEL_REF) -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meiss...@linux.ibm.com, phone: +1 (978) 899-4797