PIC_OFFSET_TABLE_REGNUM is default to be INVALID_NUM, we need to make sure it's not used as unsigned type register index, otherwise there will be array index out of bound warning which will be treated as error.
the code in shrink-wrap.c is not guarded by this check which will cause trouble for any target that define PIC_OFFSET_TABLE_REGNUM as INVALID_REGNUM, for example aarch64. (sorry, my BOOT_CFLAGS was -O2 -w -fdump-rtl-pro_and_epilogue which hidden this issue...) ok for trunk as obivious? Thanks. gcc/ * shrink-wrap.c (try_shrink_wrapping): Check PIC_OFFSET_TABLE_REGNUM not be INVALID_REGNUM.
diff --git a/gcc/shrink-wrap.c b/gcc/shrink-wrap.c index fd24135..9ae8a08 100644 --- a/gcc/shrink-wrap.c +++ b/gcc/shrink-wrap.c @@ -495,7 +495,7 @@ try_shrink_wrapping (edge *entry_edge, edge orig_entry_edge, if (frame_pointer_needed) add_to_hard_reg_set (&set_up_by_prologue.set, Pmode, HARD_FRAME_POINTER_REGNUM); - if (pic_offset_table_rtx) + if ((unsigned) PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM) add_to_hard_reg_set (&set_up_by_prologue.set, Pmode, PIC_OFFSET_TABLE_REGNUM); if (crtl->drap_reg)