summaryrefslogtreecommitdiff
path: root/gcc/config/mips/predicates.md
diff options
context:
space:
mode:
authorJames E Wilson <wilson@specifixinc.com>2005-08-01 15:25:52 -0700
committerJim Wilson <wilson@gcc.gnu.org>2005-08-01 15:25:52 -0700
commit4dbdb061864825507e4d964c8904c82970fcb17d (patch)
tree1b2f7b954419c82bc60f7e34da9c6744ffb94baf /gcc/config/mips/predicates.md
parent9e254451d2c54ff1fc1c9f1de87110566808af35 (diff)
downloadgcc-4dbdb061864825507e4d964c8904c82970fcb17d.tar.gz
Add long_call attribute to mips port.
* config/mips/mips.c (mips_encode_section_info, mips_attribute_table, TARGET_ENCODE_SECTION_INFO, TARGET_ATTRIBUTE_TABLE): New. * config/mips/mips.h (SYMBOL_FLAG_LONG_CALL, SYMBOL_REF_LONG_CALL_P): New. * config/mips/predicates.md (const_call_insn_operand): Add check for SYMBOL_REF_LONG_CALL_P. * doc/extend.texi (long_call): Document the new attribute. From-SVN: r102646
Diffstat (limited to 'gcc/config/mips/predicates.md')
-rw-r--r--gcc/config/mips/predicates.md6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md
index e4e3805845f..a96e0172149 100644
--- a/gcc/config/mips/predicates.md
+++ b/gcc/config/mips/predicates.md
@@ -103,8 +103,10 @@
switch (symbol_type)
{
case SYMBOL_GENERAL:
- /* If -mlong-calls, force all calls to use register addressing. */
- return !TARGET_LONG_CALLS;
+ /* If -mlong-calls, force all calls to use register addressing. Also,
+ if this function has the long_call attribute, we must use register
+ addressing. */
+ return !TARGET_LONG_CALLS && !SYMBOL_REF_LONG_CALL_P (op);
case SYMBOL_GOT_GLOBAL:
/* Without explicit relocs, there is no special syntax for