mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
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:
committed by
Andreas Krebbel
parent
e80da97763
commit
5125cd1ad8
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
})
|
||||
|
||||
@@ -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
|
||||
|
||||
62
gcc/testsuite/gcc.dg/20070801-1.c
Normal file
62
gcc/testsuite/gcc.dg/20070801-1.c
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user