mirror of git://gcc.gnu.org/git/gcc.git
[RS6000] Weak functions may not be file local
A weak symbol defined in the current object file may not turn out to be the definition used at link time, if other copies of the symbol exist. This means they can't be considered file local. PR target/67417 * config/rs6000/predicates.md (current_file_function_operand): Don't return true for weak symbols. * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Likewise. From-SVN: r227386
This commit is contained in:
parent
22219d9b1a
commit
b2c72901da
|
|
@ -1,3 +1,10 @@
|
|||
2015-09-02 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR target/67417
|
||||
* config/rs6000/predicates.md (current_file_function_operand): Don't
|
||||
return true for weak symbols.
|
||||
* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Likewise.
|
||||
|
||||
2015-09-01 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||
Andrew Bennett <andrew.bennett@imgtec.com>
|
||||
|
||||
|
|
|
|||
|
|
@ -902,12 +902,12 @@
|
|||
(define_predicate "current_file_function_operand"
|
||||
(and (match_code "symbol_ref")
|
||||
(match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
|
||||
&& ((SYMBOL_REF_LOCAL_P (op)
|
||||
&& ((DEFAULT_ABI != ABI_AIX
|
||||
&& DEFAULT_ABI != ABI_ELFv2)
|
||||
|| !SYMBOL_REF_EXTERNAL_P (op)))
|
||||
|| (op == XEXP (DECL_RTL (current_function_decl),
|
||||
0)))")))
|
||||
&& (SYMBOL_REF_LOCAL_P (op)
|
||||
|| op == XEXP (DECL_RTL (current_function_decl), 0))
|
||||
&& !((DEFAULT_ABI == ABI_AIX
|
||||
|| DEFAULT_ABI == ABI_ELFv2)
|
||||
&& (SYMBOL_REF_EXTERNAL_P (op)
|
||||
|| SYMBOL_REF_WEAK (op)))")))
|
||||
|
||||
;; Return 1 if this operand is a valid input for a move insn.
|
||||
(define_predicate "input_operand"
|
||||
|
|
|
|||
|
|
@ -22833,6 +22833,7 @@ rs6000_function_ok_for_sibcall (tree decl, tree exp)
|
|||
|| ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
|
||||
&& decl
|
||||
&& !DECL_EXTERNAL (decl)
|
||||
&& !DECL_WEAK (decl)
|
||||
&& (*targetm.binds_local_p) (decl))
|
||||
|| (DEFAULT_ABI == ABI_V4
|
||||
&& (!TARGET_SECURE_PLT
|
||||
|
|
|
|||
Loading…
Reference in New Issue