aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-12-13 22:20:15 -0700
committerJeff Law <law@gcc.gnu.org>1993-12-13 22:20:15 -0700
commit5eaf490bc30cbf6668ec2f17c1faddaedf7dd610 (patch)
tree0e9231b07222a5ecc159dd6ccffd6f825e3830ae
parentb0ce651a545eb6184a413991f1fb849187066d86 (diff)
downloadgcc-5eaf490bc30cbf6668ec2f17c1faddaedf7dd610.zip
gcc-5eaf490bc30cbf6668ec2f17c1faddaedf7dd610.tar.gz
gcc-5eaf490bc30cbf6668ec2f17c1faddaedf7dd610.tar.bz2
pa.md (lo_sum of a function address): Use short form as we have no intention of supporting MPE external calls.
* pa.md (lo_sum of a function address): Use short form as we have no intention of supporting MPE external calls. From-SVN: r6229
-rw-r--r--gcc/config/pa/pa.md13
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index 2ea844dd..f15a36d 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -1138,15 +1138,18 @@
(set_attr "length" "4")])
;; lo_sum of a function address.
+;;
+;; Note since we are not supporting MPE style external calls we can
+;; use the short ldil;ldo sequence. If one wanted to support
+;; MPE external calls you would want to generate something like
+;; ldil;ldo;extru;ldw;add. See the HP compiler's output for details.
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(lo_sum:SI (match_operand:SI 1 "register_operand" "r")
- (match_operand:SI 2 "function_label_operand" "")))
- (clobber (match_operand:SI 3 "register_operand" "=r"))]
+ (match_operand:SI 2 "function_label_operand" "")))]
""
- "ldo RP'%G2(%1),%0\;extru,= %0,31,1,%3\;ldw -4(0,%%r27),%3\;add %0,%3,%0"
- [(set_attr "type" "multi")
- (set_attr "length" "16")])
+ "ldo RP'%G2(%1),%0"
+ [(set_attr "length" "4")])
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")