Commit 7e5c3746 by Andreas Krebbel Committed by Andreas Krebbel

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
parent c914ac45
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
tbegin_1_z13 or tbegin_1 depending on VX flag.
* config/s390/s390.md ("tbegin_1_z13"): New expander.
......
......@@ -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;
......
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.
2015-08-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
......
/* 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;
}
/* 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;
}
/* 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment