gcc/ChangeLog:

        * config/s390/s390.cc (print_operand): Remove the no longer
        necessary 31-bit and weak symbol handling.
        * config/s390/s390.md (*movdi_64): Do not use @PLT with larl.
        (*movsi_larl): Likewise.
        (main_base_64): Likewise.
        (reload_base_64): Likewise.

gcc/testsuite/ChangeLog:

        * gcc.target/s390/call-z10-pic-nodatarel.c: Adjust
        expectations.
        * gcc.target/s390/call-z10-pic.c: Likewise.
        * gcc.target/s390/call-z10.c: Likewise.
        * gcc.target/s390/call-z9-pic-nodatarel.c: Likewise.
        * gcc.target/s390/call-z9-pic.c: Likewise.
        * gcc.target/s390/call-z9.c: Likewise.

Ok. Thanks!


Andreas


---
  gcc/config/s390/s390.cc                          | 16 +++-------------
  gcc/config/s390/s390.md                          |  8 ++++----
  .../gcc.target/s390/call-z10-pic-nodatarel.c     |  6 ++----
  gcc/testsuite/gcc.target/s390/call-z10-pic.c     |  6 ++----
  gcc/testsuite/gcc.target/s390/call-z10.c         | 14 +++++---------
  .../gcc.target/s390/call-z9-pic-nodatarel.c      |  6 ++----
  gcc/testsuite/gcc.target/s390/call-z9-pic.c      |  6 ++----
  gcc/testsuite/gcc.target/s390/call-z9.c          | 14 +++++---------
  8 files changed, 25 insertions(+), 51 deletions(-)

diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
index 86a5f059b85..1d96df49fea 100644
--- a/gcc/config/s390/s390.cc
+++ b/gcc/config/s390/s390.cc
@@ -8585,7 +8585,7 @@ print_operand_address (FILE *file, rtx addr)
      'E': print opcode suffix for branch on index instruction.
      'G': print the size of the operand in bytes.
      'J': print tls_load/tls_gdcall/tls_ldcall suffix
-    'K': print @PLT suffix for call targets and load address values.
+    'K': print @PLT suffix for branch targets; do not use with larl.
      'M': print the second word of a TImode operand.
      'N': print the second word of a DImode operand.
      'O': print only the displacement of a memory reference or address.
@@ -8854,19 +8854,9 @@ print_operand (FILE *file, rtx x, int code)
         call even static functions via PLT.  ld will optimize @PLT away for
         normal code, and keep it for patches.
- Do not indiscriminately add @PLT in 31-bit mode due to the %r12
-        restriction, use UNSPEC_PLT31 instead.
-
         @PLT only makes sense for functions, data is taken care of by
-        -mno-pic-data-is-text-relative.
-
-        Adding @PLT interferes with handling of weak symbols in non-PIC code,
-        since their addresses are loaded with larl, which then always produces
-        a non-NULL result, so skip them here as well.  */
-      if (TARGET_64BIT
-         && GET_CODE (x) == SYMBOL_REF
-         && SYMBOL_REF_FUNCTION_P (x)
-         && !(SYMBOL_REF_WEAK (x) && !flag_pic))
+        -mno-pic-data-is-text-relative.  */
+      if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_FUNCTION_P (x))
        fprintf (file, "@PLT");
        return;
      }
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index c164ea72c78..9d495803387 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -2001,7 +2001,7 @@
     vlgvg\t%0,%v1,0
     vleg\t%v0,%1,0
     vsteg\t%v1,%0,0
-   larl\t%0,%1%K1"
+   larl\t%0,%1"
    [(set_attr "op_type" 
"RI,RI,RI,RI,RI,RIL,RIL,RIL,RRE,RRE,RRE,RXY,RIL,RRE,RXY,
                          
RXY,RR,RX,RXY,RX,RXY,RIL,SIL,*,*,RS,RS,VRI,VRR,VRS,VRS,
                          VRX,VRX,RIL")
@@ -2390,7 +2390,7 @@
          (match_operand:SI 1 "larl_operand" "X"))]
    "!TARGET_64BIT
     && !FP_REG_P (operands[0])"
-  "larl\t%0,%1%K1"
+  "larl\t%0,%1"
     [(set_attr "op_type" "RIL")
      (set_attr "type"    "larl")
      (set_attr "z10prop" "z10_fwd_A1")
@@ -11735,7 +11735,7 @@
    [(set (match_operand 0 "register_operand" "=a")
          (unspec [(label_ref (match_operand 1 "" ""))] UNSPEC_MAIN_BASE))]
    "GET_MODE (operands[0]) == Pmode"
-  "larl\t%0,%1%K1"
+  "larl\t%0,%1"
    [(set_attr "op_type" "RIL")
     (set_attr "type"    "larl")
     (set_attr "z10prop" "z10_fwd_A1")
@@ -11755,7 +11755,7 @@
    [(set (match_operand 0 "register_operand" "=a")
          (unspec [(label_ref (match_operand 1 "" ""))] UNSPEC_RELOAD_BASE))]
    "GET_MODE (operands[0]) == Pmode"
-  "larl\t%0,%1%K1"
+  "larl\t%0,%1"
    [(set_attr "op_type" "RIL")
     (set_attr "type"    "larl")
     (set_attr "z10prop" "z10_fwd_A1")])
diff --git a/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c 
b/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c
index 49984614bc6..6df0c75584f 100644
--- a/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c
+++ b/gcc/testsuite/gcc.target/s390/call-z10-pic-nodatarel.c
@@ -7,10 +7,8 @@
  /* { dg-final { scan-assembler {lgrl\t%r2,foo@GOTENT\n} { target lp64 } } } */
  /* { dg-final { scan-assembler {lrl\t%r2,foo@GOTENT\n} { target { ! lp64 } } 
} } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic\n} { target { ! lp64 } 
} } } */
-/* { dg-final { scan-assembler {larl\t%r2,foostatic@PLT\n} { target lp64 } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} { target { ! lp64 } } } 
} */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
  /* { dg-final { scan-assembler {lgrl\t%r2,fooweak@GOTENT\n} { target lp64 } } 
} */
diff --git a/gcc/testsuite/gcc.target/s390/call-z10-pic.c 
b/gcc/testsuite/gcc.target/s390/call-z10-pic.c
index 210c56cc4ca..30145d5b760 100644
--- a/gcc/testsuite/gcc.target/s390/call-z10-pic.c
+++ b/gcc/testsuite/gcc.target/s390/call-z10-pic.c
@@ -7,10 +7,8 @@
  /* { dg-final { scan-assembler {lgrl\t%r2,foo@GOTENT\n} { target lp64 } } } */
  /* { dg-final { scan-assembler {lrl\t%r2,foo@GOTENT\n} { target { ! lp64 } } 
} } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic\n} { target { ! lp64 } 
} } } */
-/* { dg-final { scan-assembler {larl\t%r2,foostatic@PLT\n} { target lp64 } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} { target { ! lp64 } } } 
} */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
  /* { dg-final { scan-assembler {lgrl\t%r2,fooweak@GOTENT\n} { target lp64 } } 
} */
diff --git a/gcc/testsuite/gcc.target/s390/call-z10.c 
b/gcc/testsuite/gcc.target/s390/call-z10.c
index 2d7dc735df4..d4eab4ff89f 100644
--- a/gcc/testsuite/gcc.target/s390/call-z10.c
+++ b/gcc/testsuite/gcc.target/s390/call-z10.c
@@ -3,17 +3,13 @@
#include "call.h" -/* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foo\n} { target { ! lp64 } } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foo@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {larl\t%r2,foo\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foo\n} } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic\n} { target { ! lp64 } 
} } } */
-/* { dg-final { scan-assembler {larl\t%r2,foostatic@PLT\n} { target lp64 } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} { target { ! lp64 } } } 
} */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak\n} } } */
+/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
  /* { dg-final { scan-assembler {larl\t%r2,fooweak\n} } } */
/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c 
b/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c
index b1ae318d3e9..fe515bf1903 100644
--- a/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c
+++ b/gcc/testsuite/gcc.target/s390/call-z9-pic-nodatarel.c
@@ -6,10 +6,8 @@
  /* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} } } */
  /* { dg-final { scan-assembler {larl\t%r\d+,foo@GOTENT\n} } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic\n} { target { ! lp64 } 
} } } */
-/* { dg-final { scan-assembler {larl\t%r2,foostatic@PLT\n} { target lp64 } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} { target { ! lp64 } } } 
} */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
  /* { dg-final { scan-assembler {larl\t%r\d+,fooweak@GOTENT\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z9-pic.c 
b/gcc/testsuite/gcc.target/s390/call-z9-pic.c
index a89e78d8df8..43e1c2f7cb3 100644
--- a/gcc/testsuite/gcc.target/s390/call-z9-pic.c
+++ b/gcc/testsuite/gcc.target/s390/call-z9-pic.c
@@ -6,10 +6,8 @@
  /* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} } } */
  /* { dg-final { scan-assembler {larl\t%r\d+,foo@GOTENT\n} } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic\n} { target { ! lp64 } 
} } } */
-/* { dg-final { scan-assembler {larl\t%r2,foostatic@PLT\n} { target lp64 } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} { target { ! lp64 } } } 
} */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
  /* { dg-final { scan-assembler {larl\t%r\d+,fooweak@GOTENT\n} } } */
diff --git a/gcc/testsuite/gcc.target/s390/call-z9.c 
b/gcc/testsuite/gcc.target/s390/call-z9.c
index 21d035aecb6..b755f33498a 100644
--- a/gcc/testsuite/gcc.target/s390/call-z9.c
+++ b/gcc/testsuite/gcc.target/s390/call-z9.c
@@ -3,17 +3,13 @@
#include "call.h" -/* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foo\n} { target { ! lp64 } } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foo@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {larl\t%r2,foo\n} { target { ! lp64 } } } } */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foo@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foo\n} } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} { target lp64 } } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic\n} { target { ! lp64 } 
} } } */
-/* { dg-final { scan-assembler {larl\t%r2,foostatic@PLT\n} { target lp64 } } } 
*/
-/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} { target { ! lp64 } } } 
} */
+/* { dg-final { scan-assembler {brasl\t%r\d+,foostatic@PLT\n} } } */
+/* { dg-final { scan-assembler {larl\t%r2,foostatic\n} } } */
-/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak\n} } } */
+/* { dg-final { scan-assembler {brasl\t%r\d+,fooweak@PLT\n} } } */
  /* { dg-final { scan-assembler {larl\t%r2,fooweak\n} } } */
/* { dg-final { scan-assembler {foos:\n\t.quad\tfoo\n\t.quad\tfoostatic\n\t.quad\tfooweak\n} { target lp64 } } } */

Reply via email to