aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2004-12-19 20:10:41 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2004-12-19 20:10:41 +0000
commit386065531e4009c2c5ac80cf4e8b1cf4c53ba493 (patch)
tree8c3801026bc7d9e4ae16bca5a8ae983cfda40dd0 /gcc
parented9c846c2079c536b0313dfaeef15c22e3e66a2b (diff)
downloadgcc-386065531e4009c2c5ac80cf4e8b1cf4c53ba493.zip
gcc-386065531e4009c2c5ac80cf4e8b1cf4c53ba493.tar.gz
gcc-386065531e4009c2c5ac80cf4e8b1cf4c53ba493.tar.bz2
i386.c (ix86_split_to_parts): Use an array with four elements for decoding a CONST_DOUBLE on 64 bits targets.
* config/i386/i386.c (ix86_split_to_parts): Use an array with four elements for decoding a CONST_DOUBLE on 64 bits targets. From-SVN: r92387
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog29
-rw-r--r--gcc/config/i386/i386.c4
2 files changed, 20 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c9cd9c..c3ee48f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-12-19 Steven Bosscher <stevenb@suse.de>
+
+ * config/i386/i386.c (ix86_split_to_parts): Use an array with
+ four elements for decoding a CONST_DOUBLE on 64 bits targets.
+
2004-12-19 Bernardo Innocenti <bernie@develer.com>
* config/m68k/m68kemb.h (TARGET_OS_CPP_BUILTINS): Remove redundant
@@ -5,7 +10,7 @@
2004-12-18 Daniel Berlin <dberlin@dberlin.org>
- * lambda-code.c (can_convert_to_perfect_nest): Make checking
+ * lambda-code.c (can_convert_to_perfect_nest): Make checking
match up with what perfect_nestify can actually handle.
(perfect_nestify): Don't return false in the phi node loop.
@@ -68,17 +73,17 @@
2004-12-18 Zdenek Dvorak <dvorakz@suse.cz>
- PR tree-optimization/18800
- * params.def (PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND): New parameter.
- * tree-ssa-loop-ivopts.c (struct iv_ca): Add n_cands field.
- (ALWAYS_PRUNE_CAND_SET_BOUND): New macro.
- (iv_ca_set_no_cp, iv_ca_set_cp, iv_ca_new): Update n_cands field.
- (iv_ca_delta_join, iv_ca_delta_reverse, iv_ca_n_cands, iv_ca_prune):
- New functions.
- (iv_ca_extend): Return number of candidates in the set.
- (try_add_cand_for): Add argument to iv_ca_extend calls.
- (try_improve_iv_set): Use iv_ca_prune.
- * doc/invoke.texi (iv-always-prune-cand-set-bound): Document.
+ PR tree-optimization/18800
+ * params.def (PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND): New parameter.
+ * tree-ssa-loop-ivopts.c (struct iv_ca): Add n_cands field.
+ (ALWAYS_PRUNE_CAND_SET_BOUND): New macro.
+ (iv_ca_set_no_cp, iv_ca_set_cp, iv_ca_new): Update n_cands field.
+ (iv_ca_delta_join, iv_ca_delta_reverse, iv_ca_n_cands, iv_ca_prune):
+ New functions.
+ (iv_ca_extend): Return number of candidates in the set.
+ (try_add_cand_for): Add argument to iv_ca_extend calls.
+ (try_improve_iv_set): Use iv_ca_prune.
+ * doc/invoke.texi (iv-always-prune-cand-set-bound): Document.
2004-12-18 Zdenek Dvorak <dvorakz@suse.cz>
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index bb54c22..04ebe8c 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -9835,10 +9835,11 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
else if (GET_CODE (operand) == CONST_DOUBLE)
{
REAL_VALUE_TYPE r;
- long l[3];
+ long l[4];
REAL_VALUE_FROM_CONST_DOUBLE (r, operand);
real_to_target (l, &r, mode);
+
/* Do not use shift by 32 to avoid warning on 32bit systems. */
if (HOST_BITS_PER_WIDE_INT >= 64)
parts[0]
@@ -9848,6 +9849,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
DImode);
else
parts[0] = immed_double_const (l[0], l[1], DImode);
+
if (upper_mode == SImode)
parts[1] = gen_int_mode (l[2], SImode);
else if (HOST_BITS_PER_WIDE_INT >= 64)