s390.md (TF in GPR splitter): Change operand_subword parameter to TFmode.

2007-08-01  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md (TF in GPR splitter): Change operand_subword
	parameter to TFmode.

2007-08-01  Andreas Krebbel  <krebbel1@de.ibm.com>

	* gcc.dg/20070801-1.c: New testcase.

From-SVN: r127115
This commit is contained in:
Andreas Krebbel
2007-08-01 08:43:06 +00:00
committed by Andreas Krebbel
parent e80da97763
commit 5125cd1ad8
4 changed files with 72 additions and 1 deletions

View File

@@ -1,3 +1,8 @@
2007-08-01 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.md (TF in GPR splitter): Change operand_subword
parameter to TFmode.
2007-07-30 Mark Mitchell <mark@codesourcery.com>
* BASE-VER: Bump.

View File

@@ -1500,7 +1500,7 @@
&& !s_operand (operands[1], VOIDmode)"
[(set (match_dup 0) (match_dup 1))]
{
rtx addr = operand_subword (operands[0], 1, 0, DFmode);
rtx addr = operand_subword (operands[0], 1, 0, TFmode);
s390_load_address (addr, XEXP (operands[1], 0));
operands[1] = replace_equiv_address (operands[1], addr);
})

View File

@@ -1,3 +1,7 @@
2007-08-01 Andreas Krebbel <krebbel1@de.ibm.com>
* gcc.dg/20070801-1.c: New testcase.
2007-07-30 Paolo Carlini <pcarlini@suse.de>
PR c++/32108

View File

@@ -0,0 +1,62 @@
/* This failed on s390x due to a back end bug. */
/* { dg-do compile { target fpic } } */
/* { dg-options "-O2 -fpic" } */
typedef long unsigned int size_t;
typedef enum
{
TYPE_SCHAR, TYPE_LONGDOUBLE
}
arg_type;
typedef struct
{
arg_type type;
union
{
signed char a_schar;
long double a_longdouble;
}
a;
}
argument;
typedef struct
{
argument *arg;
}
arguments;
int ind;
extern void foo (arguments *a);
void
bar ()
{
arguments a;
char *buf;
char *result;
int uninitialized;
int count, i;
int retcount;
foo (&a);
switch (a.arg[ind].type)
{
case TYPE_SCHAR:
{
if (uninitialized == 0)
__builtin___snprintf_chk (result, 10, 1, 10, buf, 1, &count);
}
case TYPE_LONGDOUBLE:
{
long double arg = a.arg[ind].a.a_longdouble;
if (uninitialized == 0)
__builtin___snprintf_chk (result, 10, 1, 10, buf, arg, &count);
}
}
}