diff options
author | Richard Henderson <rth@redhat.com> | 2004-06-07 10:21:05 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-06-07 10:21:05 -0700 |
commit | 5c64c9001b34df259ef676ec1af22a652dcd3607 (patch) | |
tree | 5e74f52ca677863288bf42f1e90e033f30e5e686 /gcc/expmed.c | |
parent | 07d5edd25f93b247c49250803a3e37b8f17027b2 (diff) | |
download | gcc-5c64c9001b34df259ef676ec1af22a652dcd3607.zip gcc-5c64c9001b34df259ef676ec1af22a652dcd3607.tar.gz gcc-5c64c9001b34df259ef676ec1af22a652dcd3607.tar.bz2 |
re PR rtl-optimization/15193 (Unary minus using pointer to V4SF vector causes -fforce-mem to exhaust all memory)
PR rtl-opt/15193
* expmed.c (extract_bit_field): Fix vector_extract return.
* config/i386/i386.md (negv4sf2): New pattern.
From-SVN: r82699
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index 3751bc5..9679b71 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -1125,6 +1125,7 @@ extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, || ! (*insn_data[icode].operand[1].predicate) (src, mode1) || ! (*insn_data[icode].operand[2].predicate) (rtxpos, mode2)) abort (); + pat = GEN_FCN (icode) (dest, src, rtxpos); seq = get_insns (); end_sequence (); @@ -1132,9 +1133,7 @@ extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, { emit_insn (seq); emit_insn (pat); - return extract_bit_field (dest, bitsize, - bitnum - pos * GET_MODE_BITSIZE (innermode), - unsignedp, target, mode, tmode, total_size); + return dest; } } |