From: Alexandre Oliva Date: Mon, 18 Sep 2000 16:41:22 +0000 (+0000) Subject: sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=55eec6605c16043daf8604c66a5a8d5e3e37c720;p=gcc.git sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs. * config/sh/sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs. * config/sh/sh.md (sym_label2reg, symPLT_label2reg): Protect LABEL_REFs with a PIC-safe unspec. From-SVN: r36495 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 45f82e026c6..368cab3efe0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-09-18 Alexandre Oliva + + * config/sh/sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs. + * config/sh/sh.md (sym_label2reg, symPLT_label2reg): Protect + LABEL_REFs with a PIC-safe unspec. + 2000-09-18 Will Cohen * extend.texi (Zero Length): State that static initializers for diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 158e66f3177..903f1c542f8 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -5277,8 +5277,8 @@ sh_insn_length_adjustment (insn) return 0; } -/* Return TRUE if X references a SYMBOL_REF whose symbol doesn't have - @GOT or @GOTOFF. */ +/* Return TRUE if X references a SYMBOL_REF or LABEL_REF whose symbol + isn't protected by a PIC unspec. */ int nonpic_symbol_mentioned_p (x) rtx x; @@ -5286,7 +5286,7 @@ nonpic_symbol_mentioned_p (x) register const char *fmt; register int i; - if (GET_CODE (x) == SYMBOL_REF) + if (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF) return 1; if (GET_CODE (x) == UNSPEC diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index a4f17d686f0..2930b7ce377 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -3482,8 +3482,9 @@ else [(set (match_operand:SI 0 "" "") (const (minus:SI (unspec [(match_operand:SI 1 "" "")] 6) - (const (plus:SI (label_ref (match_operand:SI 2 "" "")) - (const_int 2))))))] + (const (plus:SI + (unspec [(label_ref (match_operand:SI 2 "" ""))] 6) + (const_int 2))))))] "" "") (define_expand "symGOT2reg" @@ -3514,8 +3515,10 @@ else (const (minus:SI (plus:SI (pc) (unspec [(match_operand:SI 1 "" "")] 9)) - (const (plus:SI (label_ref (match_operand:SI 2 "" "")) - (const_int 2)))))) + (const + (plus:SI + (unspec [(label_ref (match_operand:SI 2 "" ""))] 6) + (const_int 2)))))) (use (match_dup 3))] ;; Even though the PIC register is not really used by the call ;; sequence in which this is expanded, the PLT code assumes the PIC