Use @local for local calls under System V
authorMichael Meissner <meissner@cygnus.com>
Wed, 26 Nov 1997 22:59:52 +0000 (22:59 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Wed, 26 Nov 1997 22:59:52 +0000 (22:59 +0000)
From-SVN: r16765

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index f60b9060a0f830934746d0b861f2985af0c0d838..80525ff7b5fa83a57e3680cf79cd393616cc3d86 100644 (file)
@@ -1,5 +1,8 @@
 Wed Nov 26 15:47:30 1997  Michael Meissner  <meissner@cygnus.com>
 
+       * rs6000.md (call insns): For local calls, use @local suffix under
+       System V.  Don't use @plt under Solaris.
+
        * rs6000.c (output_function_profiler): Put label address in r0, and
        store LR in 4(sp) for System V/eabi.
 
index 26ea2b4a0b3687f95762d705473c45faa9745be4..cf88a7a22265003a84e0759397b55721d63923e1 100644 (file)
   else if (INTVAL (operands[2]) & CALL_V4_CLEAR_FP_ARGS)
     output_asm_insn (\"creqv 6,6,6\", operands);
 
-  return \"bl %z0\";
+  return (DEFAULT_ABI == ABI_V4 && flag_pic) ? \"bl %z0@local\" : \"bl %z0\";
 }"
   [(set_attr "type" "branch")
    (set_attr "length" "4,8")])
   else if (INTVAL (operands[2]) & CALL_V4_CLEAR_FP_ARGS)
     output_asm_insn (\"creqv 6,6,6\", operands);
 
-  return flag_pic ? \"bl %z0@plt\" : \"bl %z0\";
+  return (DEFAULT_ABI == ABI_V4 && flag_pic) ? \"bl %z0@plt\" : \"bl %z0\";
 }"
   [(set_attr "type" "branch")
    (set_attr "length" "4,8")])
   else if (INTVAL (operands[3]) & CALL_V4_CLEAR_FP_ARGS)
     output_asm_insn (\"creqv 6,6,6\", operands);
 
-  return \"bl %z1\";
+  return (DEFAULT_ABI == ABI_V4 && flag_pic) ? \"bl %z1@local\" : \"bl %z1\";
 }"
   [(set_attr "type" "branch")
    (set_attr "length" "4,8")])
   else if (INTVAL (operands[3]) & CALL_V4_CLEAR_FP_ARGS)
     output_asm_insn (\"creqv 6,6,6\", operands);
 
-  return flag_pic ? \"bl %z1@plt\" : \"bl %z1\";
+  return (DEFAULT_ABI == ABI_V4 && flag_pic) ? \"bl %z1@plt\" : \"bl %z1\";
 }"
   [(set_attr "type" "branch")
    (set_attr "length" "4,8")])