aboutsummaryrefslogtreecommitdiff
path: root/gcc/optabs.h
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2011-06-01 19:49:53 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2011-06-01 19:49:53 +0000
commit02972eafb03f823c9dcbe3ede3d1f96562afaa89 (patch)
tree512555575631369514775396520cedb9467f1074 /gcc/optabs.h
parent4d41c2d1ce6f01c53eb8941461b3047e8a6368f6 (diff)
downloadgcc-02972eafb03f823c9dcbe3ede3d1f96562afaa89.zip
gcc-02972eafb03f823c9dcbe3ede3d1f96562afaa89.tar.gz
gcc-02972eafb03f823c9dcbe3ede3d1f96562afaa89.tar.bz2
re PR target/45074 (GCC Segmentation fault - negating global register variables)
gcc/ PR target/45074 * optabs.h (valid_multiword_target_p): Declare. * expmed.c (extract_bit_field_1): Check valid_multiword_target_p when doing multi-word operations. * optabs.c (expand_binop): Likewise. (expand_doubleword_bswap): Likewise. (expand_absneg_bit): Likewise. (expand_unop): Likewise. (expand_copysign_bit): Likewise. (multiword_target_p): New function. gcc/testsuite/ PR target/45074 * gcc.target/mips/pr45074.c: New test. From-SVN: r174541
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r--gcc/optabs.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h
index db6e65e..62bc14e 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -1059,6 +1059,8 @@ create_integer_operand (struct expand_operand *op, HOST_WIDE_INT intval)
create_expand_operand (op, EXPAND_INTEGER, GEN_INT (intval), VOIDmode, false);
}
+extern bool valid_multiword_target_p (rtx);
+
extern bool maybe_legitimize_operands (enum insn_code icode,
unsigned int opno, unsigned int nops,
struct expand_operand *ops);