PR target/40575
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jul 2009 16:53:26 +0000 (16:53 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jul 2009 16:53:26 +0000 (16:53 +0000)
* pa.md (casesi32p): Use jump table label to determine the offset
of the jump table.
(casesi64p): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149144 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/pa/pa.md

index 9b42f4f..022af0a 100644 (file)
@@ -1,5 +1,10 @@
 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
+       PR target/40575
+       * pa.md (casesi32p): Use jump table label to determine the offset
+       of the jump table.
+       (casesi64p): Likewise.
+
        * pa.c (forward_branch_p): Return bool type.  Use instruction addresses
        when available.  Assert that INSN has a jump label.
        (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
index 1f5a69b..a20f406 100644 (file)
    (clobber (match_scratch:SI 2 "=&r"))
    (clobber (match_scratch:SI 3 "=&r"))]
   "flag_pic"
-  "{bl .+8,%2\;depi 0,31,2,%2|mfia %2}\;ldo {16|20}(%2),%2\;\
+  "{bl .+8,%2\;depi 0,31,2,%2|mfia %2}\;ldo {%l1-.|%l1+4-.}(%2),%2\;\
 {ldwx|ldw},s %0(%2),%3\;{addl|add,l} %2,%3,%3\;bv,n %%r0(%3)"
   [(set_attr "type" "multi")
    (set (attr "length")
    (clobber (match_scratch:DI 2 "=&r"))
    (clobber (match_scratch:DI 3 "=&r"))]
   ""
-  "mfia %2\;ldo 24(%2),%2\;ldw,s %0(%2),%3\;extrd,s %3,63,32,%3\;\
+  "mfia %2\;ldo %l1+4-.(%2),%2\;ldw,s %0(%2),%3\;extrd,s %3,63,32,%3\;\
 add,l %2,%3,%3\;bv,n %%r0(%3)"
   [(set_attr "type" "multi")
    (set_attr "length" "24")])