]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
S/390: Fix dwarf reg size table for -m31 -mzarch.
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Thu, 6 Aug 2015 10:23:38 +0000 (10:23 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Thu, 6 Aug 2015 10:23:38 +0000 (10:23 +0000)
gcc/ChangeLog:
    * config/s390/s390.c (s390_dwarf_frame_reg_mode): Return Pmode for
    all GPRs.

gcc/testsuite/ChangeLog:
    * gcc.target/s390/dwarfregtable-1.c: New test.
    * gcc.target/s390/dwarfregtable-2.c: New test.
    * gcc.target/s390/dwarfregtable-3.c: New test.

From-SVN: r226673

gcc/ChangeLog
gcc/config/s390/s390.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/dwarfregtable-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/dwarfregtable-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/dwarfregtable-3.c [new file with mode: 0644]

index 357ea67b76ec5868056ba17f711b3b7bf4b6faa3..aab022cb72236be0be47541a883762c24d75636a 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * config/s390/s390.c (s390_dwarf_frame_reg_mode): Return Pmode for
+       all GPRs.
+
 2015-08-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * config/s390/s390.c (s390_expand_tbegin): Expand either
index 24a92908556e2dff915978df1a9de59d2e49e12c..5814694adbca2231850c150eaf6bc155e60426e4 100644 (file)
@@ -6497,6 +6497,10 @@ s390_dwarf_frame_reg_mode (int regno)
 {
   machine_mode save_mode = default_dwarf_frame_reg_mode (regno);
 
+  /* Make sure not to return DImode for any GPR with -m31 -mzarch.  */
+  if (GENERAL_REGNO_P (regno))
+    save_mode = Pmode;
+
   /* The rightmost 64 bits of vector registers are call-clobbered.  */
   if (GET_MODE_SIZE (save_mode) > 8)
     save_mode = DImode;
index e087538b332d84f136841953aa3485677fcf7a97..74bbd272d7fa2a736d8457f9e2c1dbe814fd9221 100644 (file)
@@ -1,3 +1,9 @@
+2015-08-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * gcc.target/s390/dwarfregtable-1.c: New test.
+       * gcc.target/s390/dwarfregtable-2.c: New test.
+       * gcc.target/s390/dwarfregtable-3.c: New test.
+
 2015-08-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * gcc.target/s390/htm-builtins-z13-1.c: New test.
diff --git a/gcc/testsuite/gcc.target/s390/dwarfregtable-1.c b/gcc/testsuite/gcc.target/s390/dwarfregtable-1.c
new file mode 100644 (file)
index 0000000..b125498
--- /dev/null
@@ -0,0 +1,21 @@
+/* Make sure the dwarf reg size table doesn't change for 31 bit.  */
+
+/* { dg-do compile { target { ! lp64 } } } */
+/* { dg-options "-mesa" } */
+
+#define DWARF_FRAME_REGISTERS 34
+
+static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1];
+static unsigned char ref_reg_size_table[DWARF_FRAME_REGISTERS + 1] =
+  { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 0 };
+
+int
+main ()
+{
+  __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
+  if (__builtin_memcmp (ref_reg_size_table,
+                       dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0)
+    __builtin_abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/s390/dwarfregtable-2.c b/gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
new file mode 100644 (file)
index 0000000..bc5a9f8
--- /dev/null
@@ -0,0 +1,21 @@
+/* Make sure the dwarf reg size table doesn't change for 31 bit zarch.  */
+
+/* { dg-do compile { target { ! lp64 } } } */
+/* { dg-options "-mzarch" } */
+
+#define DWARF_FRAME_REGISTERS 34
+
+static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1];
+static unsigned char ref_reg_size_table[DWARF_FRAME_REGISTERS + 1] =
+  { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 0 };
+
+int
+main ()
+{
+  __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
+  if (__builtin_memcmp (ref_reg_size_table,
+                       dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0)
+    __builtin_abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/s390/dwarfregtable-3.c b/gcc/testsuite/gcc.target/s390/dwarfregtable-3.c
new file mode 100644 (file)
index 0000000..55711bf
--- /dev/null
@@ -0,0 +1,20 @@
+/* Make sure the dwarf reg size table doesn't change for 64 bit.  */
+
+/* { dg-do compile { target { lp64 } } } */
+
+#define DWARF_FRAME_REGISTERS 34
+
+static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1];
+static unsigned char ref_reg_size_table[DWARF_FRAME_REGISTERS + 1] =
+  { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+    8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 0 };
+
+int
+main ()
+{
+  __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
+  if (__builtin_memcmp (ref_reg_size_table,
+                       dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0)
+    __builtin_abort ();
+  return 0;
+}