S/390: Fix dwarf reg size table for -m31 -mzarch.
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
This commit is contained in:
parent
c914ac45c7
commit
7e5c374606
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue