aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-06-07 10:21:05 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-06-07 10:21:05 -0700
commit5c64c9001b34df259ef676ec1af22a652dcd3607 (patch)
tree5e74f52ca677863288bf42f1e90e033f30e5e686 /gcc/expmed.c
parent07d5edd25f93b247c49250803a3e37b8f17027b2 (diff)
downloadgcc-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.c5
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;
}
}