aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2006-04-04 17:58:55 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2006-04-04 13:58:55 -0400
commit547b216d76235c0dcae99808c83e0433bdfb80c5 (patch)
treebeef7d1a7da4bcb6515fc761dc320b822e2b0390
parentdc61cc6bd6088d90ce8515fb6b2df276f9d35cf2 (diff)
downloadgcc-547b216d76235c0dcae99808c83e0433bdfb80c5.zip
gcc-547b216d76235c0dcae99808c83e0433bdfb80c5.tar.gz
gcc-547b216d76235c0dcae99808c83e0433bdfb80c5.tar.bz2
rs6000.c (num_insns_constant_wide): Change satisfies_constraint_[IL] to explicit tests on value.
* config/rs6000/rs6000.c (num_insns_constant_wide): Change satisfies_constraint_[IL] to explicit tests on value. From-SVN: r112676
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1b34bd3..6201129 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-04 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.c (num_insns_constant_wide): Change
+ satisfies_constraint_[IL] to explicit tests on value.
+
2006-04-04 Sebastian Pop <pop@cri.ensmp.fr>
* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 9d303c0..63ee622 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -2004,11 +2004,12 @@ int
num_insns_constant_wide (HOST_WIDE_INT value)
{
/* signed constant loadable with {cal|addi} */
- if (satisfies_constraint_I (GEN_INT (value)))
+ if ((unsigned HOST_WIDE_INT) (value + 0x8000) < 0x10000)
return 1;
/* constant loadable with {cau|addis} */
- else if (satisfies_constraint_L (GEN_INT (value)))
+ else if ((value & 0xffff) == 0
+ && (value >> 31 == -1 || value >> 31 == 0))
return 1;
#if HOST_BITS_PER_WIDE_INT == 64