diff options
author | Zack Weinberg <zack@gcc.gnu.org> | 2002-05-13 04:50:20 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2002-05-13 04:50:20 +0000 |
commit | 5692c7bc60a884946e782bb9c1fe72e919301557 (patch) | |
tree | e4ab53634b284c98ed87220fcf4d28bcf380dd5b /gcc/config | |
parent | 31397a7b647de5fd81965c36a86ac04b1de7da57 (diff) | |
download | gcc-5692c7bc60a884946e782bb9c1fe72e919301557.tar.gz |
emit-rtl.c (global_rtl): Update comment.
* emit-rtl.c (global_rtl): Update comment.
(const_double_htab, const_double_htab_hash,
const_double_htab_hash, lookup_const_double): New.
(const_int_htab_hash, const_int_htab_eq): Remove const
qualifiers, which cause tons of warnings with RTL checking on.
(gen_rtx_CONST_DOUBLE): Deleted.
(const_double_from_real_value): New function - bears some
resemblance to the former immed_real_const_1.
(immed_double_const): Moved here from varasm.c and
simplified.
(gen_rtx_REG): Make REGNO unsigned to squelch warnings.
(gen_rtx_SUBREG): Use gen_rtx_raw_SUBREG.
(gen_rtx): Use immed_double_const.
(init_emit_once): Initialize the const_double_htab. Use
REAL_VALUE_FROM_INT where possible. Can now use
CONST_DOUBLE_FROM_REAL_VALUE when setting up const_tiny_rtx.
* varasm.c (struct varasm_status): Remove x_const_double_chain.
(const_double_chain, immed_real_const, clear_const_double_mem): Delete.
(immed_double_const, immed_real_const_1): Moved to emit-rtl.c.
(init_varasm_status, mark_varasm_status): Don't touch
x_const_double_chain.
* output.h: Delete prototype for clear_const_double_mem.
* real.h: Make REAL_VALUE_TYPE a macro again. Remove leading
'0' slot from all CONST_DOUBLE_FORMAT definitions. Prototype
const_double_from_real_value, not immed_real_const_1, and use
it to define CONST_DOUBLE_FROM_REAL_VALUE. Define new macro
CONST_DOUBLE_ATOF.
* rtl.h (CONST_DOUBLE_CHAIN): Kill.
(CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Adjust.
(gen_rtx_CONST_DOUBLE, immed_real_const): Delete prototypes.
(gen_rtx_REG): Second arg is unsigned.
* gengenrtl.c (special_rtx): Take out CONST_DOUBLE.
(excluded_rtx): New, return true for CONST_DOUBLE.
(genmacro): Write nothing for excluded codes.
* combine.c (combine_simplify_rtx): Use CONST_DOUBLE_FROM_REAL_VALUE.
* expr.c (expand_expr): Likewise.
* ggc-common.c (ggc_mark_rtx_children_1): Don't mark the
CONST_DOUBLE_CHAIN.
* toplev.c (rest_of_compilation): Don't call
clear_const_double_mem.
* config/rs6000/rs6000.c (rs6000_float_const): Delete.
(rs6000_hash_constant): Remove CONST_DOUBLE special case.
(toc_hash_eq): Remove CONST_DOUBLE and LABEL_REF special cases.
* config/rs6000/rs6000-protos.h: Don't prototype rs6000_float_const.
* config/c4x/c4x.md, config/rs6000/rs6000.md: Use CONST_DOUBLE_ATOF.
* config/dsp16xx/dsp16xx.md, config/mips/mips.md,
config/pa/pa.md: Use CONST_DOUBLE_FROM_REAL_VALUE.
* config/sparc/sparc.md, config/sparc/sparc.c: Use immed_double_const.
From-SVN: r53409
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/c4x/c4x.md | 22 | ||||
-rw-r--r-- | gcc/config/dsp16xx/dsp16xx.md | 2 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 8 | ||||
-rw-r--r-- | gcc/config/pa/pa.md | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 41 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 4 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 18 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.md | 2 |
9 files changed, 30 insertions, 75 deletions
diff --git a/gcc/config/c4x/c4x.md b/gcc/config/c4x/c4x.md index f7e44b1c4ec..b9ac85cffe8 100644 --- a/gcc/config/c4x/c4x.md +++ b/gcc/config/c4x/c4x.md @@ -3714,8 +3714,7 @@ operands[4] = gen_reg_rtx (QFmode); operands[5] = gen_reg_rtx (QFmode); operands[6] = gen_reg_rtx (QFmode); - emit_move_insn (operands[5], - immed_real_const_1 (REAL_VALUE_ATOF (\"4294967296.0\", QFmode), QFmode));") + emit_move_insn (operands[5], CONST_DOUBLE_ATOF (\"4294967296.0\", QFmode));") (define_expand "floatunsqihf2" [(set (match_dup 2) (match_dup 3)) @@ -3737,8 +3736,7 @@ operands[4] = gen_reg_rtx (HFmode); operands[5] = gen_reg_rtx (HFmode); operands[6] = gen_reg_rtx (HFmode); - emit_move_insn (operands[5], - immed_real_const_1 (REAL_VALUE_ATOF (\"4294967296.0\", HFmode), HFmode));") + emit_move_insn (operands[5], CONST_DOUBLE_ATOF (\"4294967296.0\", HFmode));") (define_insn "floatqihf2" [(set (match_operand:HF 0 "reg_operand" "=h") @@ -3877,8 +3875,7 @@ operands[3] = gen_reg_rtx (QFmode); operands[4] = gen_reg_rtx (QImode); operands[5] = gen_reg_rtx (QFmode); - emit_move_insn (operands[5], - immed_real_const_1 (REAL_VALUE_ATOF (\"4294967296.0\", QFmode), QFmode));") + emit_move_insn (operands[5], CONST_DOUBLE_ATOF (\"4294967296.0\", QFmode));") (define_expand "fixuns_trunchfqi2" [(parallel [(set (match_dup 2) @@ -3900,8 +3897,7 @@ operands[3] = gen_reg_rtx (HFmode); operands[4] = gen_reg_rtx (QImode); operands[5] = gen_reg_rtx (HFmode); - emit_move_insn (operands[5], - immed_real_const_1 (REAL_VALUE_ATOF (\"4294967296.0\", HFmode), HFmode));") + emit_move_insn (operands[5], CONST_DOUBLE_ATOF (\"4294967296.0\", HFmode));") (define_expand "fixuns_truncqfhi2" [(parallel [(set (match_operand:HI 0 "reg_operand" "") @@ -3981,10 +3977,8 @@ operands[2] = gen_reg_rtx (QFmode); operands[3] = gen_reg_rtx (QFmode); operands[4] = gen_reg_rtx (QFmode); - operands[5] = immed_real_const_1 (REAL_VALUE_ATOF (\"0.5\", QFmode), - QFmode); - operands[6] = immed_real_const_1 (REAL_VALUE_ATOF (\"1.5\", QFmode), - QFmode);") + operands[5] = CONST_DOUBLE_ATOF (\"0.5\", QFmode); + operands[6] = CONST_DOUBLE_ATOF (\"1.5\", QFmode);") (define_expand "sqrtqf2" [(parallel [(set (match_operand:QF 0 "reg_operand" "") @@ -6197,8 +6191,8 @@ operands[2] = gen_reg_rtx (HFmode); operands[3] = gen_reg_rtx (HFmode); operands[4] = gen_reg_rtx (HFmode); - operands[5] = immed_real_const_1 (REAL_VALUE_ATOF (\"0.5\", HFmode), HFmode); - operands[6] = immed_real_const_1 (REAL_VALUE_ATOF (\"1.5\", HFmode), HFmode); + operands[5] = CONST_DOUBLE_ATOF (\"0.5\", HFmode); + operands[6] = CONST_DOUBLE_ATOF (\"1.5\", HFmode); ") diff --git a/gcc/config/dsp16xx/dsp16xx.md b/gcc/config/dsp16xx/dsp16xx.md index 31247ba38f8..fc506b975a4 100644 --- a/gcc/config/dsp16xx/dsp16xx.md +++ b/gcc/config/dsp16xx/dsp16xx.md @@ -1939,7 +1939,7 @@ if (reg1) /* turn off complaints about unreached code */ { - emit_move_insn (reg1, immed_real_const_1 (offset, HFmode)); + emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, HFmode)); do_pending_stack_adjust (); emit_insn (gen_cmphf (operands[1], reg1)); diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index bbce30eb3bf..118c15984ed 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -4509,7 +4509,7 @@ move\\t%0,%z4\\n\\ if (reg1) /* turn off complaints about unreached code */ { - emit_move_insn (reg1, immed_real_const_1 (offset, DFmode)); + emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, DFmode)); do_pending_stack_adjust (); emit_insn (gen_cmpdf (operands[1], reg1)); @@ -4553,7 +4553,7 @@ move\\t%0,%z4\\n\\ if (reg1) /* turn off complaints about unreached code */ { - emit_move_insn (reg1, immed_real_const_1 (offset, DFmode)); + emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, DFmode)); do_pending_stack_adjust (); emit_insn (gen_cmpdf (operands[1], reg1)); @@ -4597,7 +4597,7 @@ move\\t%0,%z4\\n\\ if (reg1) /* turn off complaints about unreached code */ { - emit_move_insn (reg1, immed_real_const_1 (offset, SFmode)); + emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, SFmode)); do_pending_stack_adjust (); emit_insn (gen_cmpsf (operands[1], reg1)); @@ -4641,7 +4641,7 @@ move\\t%0,%z4\\n\\ if (reg1) /* turn off complaints about unreached code */ { - emit_move_insn (reg1, immed_real_const_1 (offset, SFmode)); + emit_move_insn (reg1, CONST_DOUBLE_FROM_REAL_VALUE (offset, SFmode)); do_pending_stack_adjust (); emit_insn (gen_cmpsf (operands[1], reg1)); diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index e1b952bfce8..a8145546548 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -4796,7 +4796,8 @@ emit_insn (gen_negdf2_fast (operands[0], operands[1])); else { - operands[2] = force_reg (DFmode, immed_real_const_1 (dconstm1, DFmode)); + operands[2] = force_reg (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (dconstm1, DFmode)); emit_insn (gen_muldf3 (operands[0], operands[1], operands[2])); } DONE; @@ -4826,7 +4827,8 @@ emit_insn (gen_negsf2_fast (operands[0], operands[1])); else { - operands[2] = force_reg (SFmode, immed_real_const_1 (dconstm1, SFmode)); + operands[2] = force_reg (SFmode, + CONST_DOUBLE_FROM_REAL_VALUE (dconstm1, SFmode)); emit_insn (gen_mulsf3 (operands[0], operands[1], operands[2])); } DONE; diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 26bb1e6cd13..954366334ba 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -160,8 +160,6 @@ extern enum direction function_arg_padding PARAMS ((enum machine_mode, tree)); extern void optimization_options PARAMS ((int, int)); extern void rs6000_override_options PARAMS ((const char *)); extern void rs6000_file_start PARAMS ((FILE *, const char *)); -extern struct rtx_def *rs6000_float_const PARAMS ((const char *, - enum machine_mode)); extern int direct_return PARAMS ((void)); extern union tree_node *rs6000_build_va_list PARAMS ((void)); extern int first_reg_to_save PARAMS ((void)); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c6b703bcc8a..44e70dbc384 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -702,19 +702,6 @@ rs6000_file_start (file, default_cpu) putc ('\n', file); } } - - -/* Create a CONST_DOUBLE from a string. */ - -struct rtx_def * -rs6000_float_const (string, mode) - const char *string; - enum machine_mode mode; -{ - REAL_VALUE_TYPE value; - value = REAL_VALUE_ATOF (string, mode); - return immed_real_const_1 (value, mode); -} /* Return non-zero if this function is known to have a null epilogue. */ @@ -10044,9 +10031,7 @@ rs6000_hash_constant (k) if (GET_CODE (k) == LABEL_REF) return result * 1231 + X0INT (XEXP (k, 0), 3); - if (GET_CODE (k) == CONST_DOUBLE) - fidx = 1; - else if (GET_CODE (k) == CODE_LABEL) + if (GET_CODE (k) == CODE_LABEL) fidx = 3; else fidx = 0; @@ -10112,29 +10097,7 @@ toc_hash_eq (h1, h2) != ((const struct toc_hash_struct *) h2)->key_mode) return 0; - /* Gotcha: One of these const_doubles will be in memory. - The other may be on the constant-pool chain. - So rtx_equal_p will think they are different... */ - if (r1 == r2) - return 1; - if (GET_CODE (r1) != GET_CODE (r2) - || GET_MODE (r1) != GET_MODE (r2)) - return 0; - if (GET_CODE (r1) == CONST_DOUBLE) - { - int format_len = strlen (GET_RTX_FORMAT (CONST_DOUBLE)); - int i; - for (i = 1; i < format_len; i++) - if (XWINT (r1, i) != XWINT (r2, i)) - return 0; - - return 1; - } - else if (GET_CODE (r1) == LABEL_REF) - return (CODE_LABEL_NUMBER (XEXP (r1, 0)) - == CODE_LABEL_NUMBER (XEXP (r2, 0))); - else - return rtx_equal_p (r1, r2); + return rtx_equal_p (r1, r2); } /* Mark the hash table-entry HASH_ENTRY. */ diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 6b66c42e088..423ecfd2a96 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -5253,7 +5253,7 @@ " { operands[2] = force_reg (SImode, GEN_INT (0x43300000)); - operands[3] = force_reg (DFmode, rs6000_float_const (\"4503601774854144\", DFmode)); + operands[3] = force_reg (DFmode, CONST_DOUBLE_ATOF (\"4503601774854144\", DFmode)); operands[4] = assign_stack_temp (DFmode, GET_MODE_SIZE (DFmode), 0); operands[5] = gen_reg_rtx (DFmode); operands[6] = gen_reg_rtx (SImode); @@ -5320,7 +5320,7 @@ " { operands[2] = force_reg (SImode, GEN_INT (0x43300000)); - operands[3] = force_reg (DFmode, rs6000_float_const (\"4503599627370496\", DFmode)); + operands[3] = force_reg (DFmode, CONST_DOUBLE_ATOF (\"4503599627370496\", DFmode)); operands[4] = assign_stack_temp (DFmode, GET_MODE_SIZE (DFmode), 0); operands[5] = gen_reg_rtx (DFmode); }") diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 6219be324e5..ad1b3c0c65e 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -1379,9 +1379,8 @@ sparc_emit_set_const32 (op0, op1) && (INTVAL (op1) & 0x80000000) != 0) emit_insn (gen_rtx_SET (VOIDmode, temp, - gen_rtx_CONST_DOUBLE (VOIDmode, - INTVAL (op1) & ~(HOST_WIDE_INT)0x3ff, - 0))); + immed_double_const (INTVAL (op1) & ~(HOST_WIDE_INT)0x3ff, + 0, DImode))); else emit_insn (gen_rtx_SET (VOIDmode, temp, GEN_INT (INTVAL (op1) @@ -1559,11 +1558,10 @@ static rtx gen_safe_XOR64 PARAMS ((rtx, HOST_WIDE_INT)); #define GEN_INT64(__x) GEN_INT (__x) #else #define GEN_HIGHINT64(__x) \ - gen_rtx_CONST_DOUBLE (VOIDmode, (__x) & ~(HOST_WIDE_INT)0x3ff, 0) + immed_double_const ((__x) & ~(HOST_WIDE_INT)0x3ff, 0, DImode) #define GEN_INT64(__x) \ - gen_rtx_CONST_DOUBLE (VOIDmode, (__x) & 0xffffffff, \ - ((__x) & 0x80000000 \ - ? -1 : 0)) + immed_double_const ((__x) & 0xffffffff, \ + ((__x) & 0x80000000 ? -1 : 0), DImode) #endif /* The optimizer is not to assume anything about exactly @@ -2133,9 +2131,9 @@ sparc_emit_set_const64 (op0, op1) negated_const = GEN_INT (((~low_bits) & 0xfffffc00) | (((HOST_WIDE_INT)((~high_bits) & 0xffffffff))<<32)); #else - negated_const = gen_rtx_CONST_DOUBLE (DImode, - (~low_bits) & 0xfffffc00, - (~high_bits) & 0xffffffff); + negated_const = immed_double_const ((~low_bits) & 0xfffffc00, + (~high_bits) & 0xffffffff, + DImode); #endif sparc_emit_set_const64 (temp, negated_const); } diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 37ab89916bc..34ec9de765f 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -3158,7 +3158,7 @@ emit_insn (gen_movdi (operands[0], GEN_INT (val))); #else emit_insn (gen_movdi (operands[0], - gen_rtx_CONST_DOUBLE (VOIDmode, l[1], l[0]))); + immed_double_const (l[1], l[0], DImode))); #endif } else |