aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@codesourcery.com>2006-09-24 18:47:25 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2006-09-24 18:47:25 +0000
commitab1e659cf766a49fe1923fefc9cbacbd4e320fc4 (patch)
tree2d48537026a683c3f220816d7acfb3b5cf0fc28f /gcc
parent5997afc39fe0f3f940209f2eb65a946683dcb055 (diff)
downloadgcc-ab1e659cf766a49fe1923fefc9cbacbd4e320fc4.zip
gcc-ab1e659cf766a49fe1923fefc9cbacbd4e320fc4.tar.gz
gcc-ab1e659cf766a49fe1923fefc9cbacbd4e320fc4.tar.bz2
re PR target/28911 (Cross compiler build for m68k--elf fails on x86_64-linux-gnu)
gcc/ PR target/28911 * config/m68k/m68k.md (negsf2, negdf2, negxf2): Use -2147483647 - 1 instead of 0x80000000. gcc/testsuite/ PR target/28911 * gcc.dg/pr28911.c: New. From-SVN: r117181
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/m68k/m68k.md6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr28911.c13
4 files changed, 27 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e816362..66332b1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-24 Kazu Hirata <kazu@codesourcery.com>
+
+ PR target/28911
+ * config/m68k/m68k.md (negsf2, negdf2, negxf2): Use
+ -2147483647 - 1 instead of 0x80000000.
+
2006-09-23 Revital1 Eres <ERES@il.ibm.com>
* flags.h (HONOR_NANS): Fix typo in comment.
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index d00f131..ef6cb04 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -3721,7 +3721,7 @@
target = operand_subword_force (operands[0], 0, SFmode);
result = expand_binop (SImode, xor_optab,
operand_subword_force (operands[1], 0, SFmode),
- GEN_INT (0x80000000), target, 0, OPTAB_WIDEN);
+ GEN_INT (-2147483647 - 1), target, 0, OPTAB_WIDEN);
gcc_assert (result);
if (result != target)
@@ -3748,7 +3748,7 @@
target = operand_subword (operands[0], 0, 1, DFmode);
result = expand_binop (SImode, xor_optab,
operand_subword_force (operands[1], 0, DFmode),
- GEN_INT (0x80000000), target, 0, OPTAB_WIDEN);
+ GEN_INT (-2147483647 - 1), target, 0, OPTAB_WIDEN);
gcc_assert (result);
if (result != target)
@@ -3780,7 +3780,7 @@
target = operand_subword (operands[0], 0, 1, XFmode);
result = expand_binop (SImode, xor_optab,
operand_subword_force (operands[1], 0, XFmode),
- GEN_INT (0x80000000), target, 0, OPTAB_WIDEN);
+ GEN_INT (-2147483647 - 1), target, 0, OPTAB_WIDEN);
gcc_assert (result);
if (result != target)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7ab0826..93aa08a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-09-24 Kazu Hirata <kazu@codesourcery.com>
+
+ PR target/28911
+ * gcc.dg/pr28911.c: New.
+
2006-09-23 Uros Bizjak <uros@kss-loka.si>
PR target/29169
diff --git a/gcc/testsuite/gcc.dg/pr28911.c b/gcc/testsuite/gcc.dg/pr28911.c
new file mode 100644
index 0000000..e1748f0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr28911.c
@@ -0,0 +1,13 @@
+/* PR target/28911
+ The following used to cause crash on m68k-elf because 0x80000000
+ was used as an SImode constant. */
+
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-options "-O2 -m68000" { target m68k-*-* } } */
+
+_Complex float
+foo (float a)
+{
+ return __builtin_copysign (a != a, a);
+}