+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-16 Richard Guenther <rguenther@suse.de>
Uros Bizjak <ubizjak@gmail.com>
&& !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);
})
+2007-08-01 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * gcc.dg/20070801-1.c: New testcase.
+
2007-07-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.dg/c99-math-double-1.c: Mark test variables as volatile.
--- /dev/null
+/* 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);
+ }
+ }
+}