diff options
author | Jakub Jelinek <jakub@redhat.com> | 2002-04-11 23:04:09 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2002-04-11 23:04:09 +0200 |
commit | 010f87c44f88d3dc30313f1b69f9ed85fe4c6630 (patch) | |
tree | 402f6049ff39cd859a6119c0c4355dc42a33f33b /gcc/expr.c | |
parent | 578fc63d144bcd49d723090a9c24f4cd69ce621d (diff) | |
download | gcc-010f87c44f88d3dc30313f1b69f9ed85fe4c6630.zip gcc-010f87c44f88d3dc30313f1b69f9ed85fe4c6630.tar.gz gcc-010f87c44f88d3dc30313f1b69f9ed85fe4c6630.tar.bz2 |
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
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -6954,6 +6954,16 @@ expand_expr (exp, target, tmode, modifier) 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 as a field, we might be extracting a BLKmode value from an integer-mode (e.g., SImode) object. Handle this case |