re PR rtl-optimization/6177 (ia64 ICE with single-element complex array in LAPACK)
PR optimization/6177 * expr.c (expand_expr) [COMPONENT_REF]: Handle op0 CONCAT if bitpos is 0 and bitsize CONCAT size. * gcc.c-torture/execute/20020411-1.c: New test. From-SVN: r52178
This commit is contained in:
parent
578fc63d14
commit
010f87c44f
|
@ -1,3 +1,9 @@
|
||||||
|
2002-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR optimization/6177
|
||||||
|
* expr.c (expand_expr) [COMPONENT_REF]: Handle op0 CONCAT if
|
||||||
|
bitpos is 0 and bitsize CONCAT size.
|
||||||
|
|
||||||
2002-04-11 Jakub Jelinek <jakub@redhat.com>
|
2002-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR c/6223
|
PR c/6223
|
||||||
|
|
10
gcc/expr.c
10
gcc/expr.c
|
@ -6954,6 +6954,16 @@ expand_expr (exp, target, tmode, modifier)
|
||||||
MEM_VOLATILE_P (op0) = 1;
|
MEM_VOLATILE_P (op0) = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The following code doesn't handle CONCAT.
|
||||||
|
Assume only bitpos == 0 can be used for CONCAT, due to
|
||||||
|
one element arrays having the same mode as its element. */
|
||||||
|
if (GET_CODE (op0) == CONCAT)
|
||||||
|
{
|
||||||
|
if (bitpos != 0 || bitsize != GET_MODE_BITSIZE (GET_MODE (op0)))
|
||||||
|
abort ();
|
||||||
|
return op0;
|
||||||
|
}
|
||||||
|
|
||||||
/* In cases where an aligned union has an unaligned object
|
/* In cases where an aligned union has an unaligned object
|
||||||
as a field, we might be extracting a BLKmode value from
|
as a field, we might be extracting a BLKmode value from
|
||||||
an integer-mode (e.g., SImode) object. Handle this case
|
an integer-mode (e.g., SImode) object. Handle this case
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
2002-04-11 Jakub Jelinek <jakub@redhat.com>
|
2002-04-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR c/6223
|
|
||||||
* combine.c (if_then_else_cond): Use trunc_int_for_mode on nz.
|
|
||||||
|
|
||||||
* gcc.dg/20020411-1.c: New test.
|
* gcc.dg/20020411-1.c: New test.
|
||||||
|
|
||||||
|
* gcc.c-torture/execute/20020411-1.c: New test.
|
||||||
|
|
||||||
2002-04-10 Janis Johnson <janis187@us.ibm.com>
|
2002-04-10 Janis Johnson <janis187@us.ibm.com>
|
||||||
|
|
||||||
* g77.f-torture/execute/6177.f: New test.
|
* g77.f-torture/execute/6177.f: New test.
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* PR optimization/6177
|
||||||
|
This testcase ICEd because expr.c did not expect to see a CONCAT
|
||||||
|
as array rtl. */
|
||||||
|
|
||||||
|
extern void abort (void);
|
||||||
|
extern void exit (int);
|
||||||
|
|
||||||
|
__complex__ float foo (void)
|
||||||
|
{
|
||||||
|
__complex__ float f[1];
|
||||||
|
__real__ f[0] = 1.0;
|
||||||
|
__imag__ f[0] = 1.0;
|
||||||
|
f[0] = __builtin_conjf (f[0]);
|
||||||
|
return f[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
__complex__ double d[1];
|
||||||
|
d[0] = foo ();
|
||||||
|
if (__real__ d[0] != 1.0
|
||||||
|
|| __imag__ d[0] != -1.0)
|
||||||
|
abort ();
|
||||||
|
exit (0);
|
||||||
|
}
|
Loading…
Reference in New Issue