Commit 732910b9 by Richard Henderson Committed by Richard Henderson

simplify-rtx.c (avoid_constant_pool_reference): Export.

        * simplify-rtx.c (avoid_constant_pool_reference): Export.
        * rtl.h (avoid_constant_pool_reference): Declare it.
        * dwarf2out.c (add_location_or_const_value_attribute): Use it.
        (add_const_value_attribute): Use add_AT_unsigned for unsigned values.

From-SVN: r44411
parent 62ba5f39
2001-07-26 Richard Henderson <rth@redhat.com>
* simplify-rtx.c (avoid_constant_pool_reference): Export.
* rtl.h (avoid_constant_pool_reference): Declare it.
* dwarf2out.c (add_location_or_const_value_attribute): Use it.
(add_const_value_attribute): Use add_AT_unsigned for unsigned values.
Thu Jul 26 22:30:22 CEST 2001 Jan Hubicka <jh@suse.cz> Thu Jul 26 22:30:22 CEST 2001 Jan Hubicka <jh@suse.cz>
* rtl.h (cleanup_barriers): Declare. * rtl.h (cleanup_barriers): Declare.
......
...@@ -8215,7 +8215,7 @@ add_const_value_attribute (die, rtl) ...@@ -8215,7 +8215,7 @@ add_const_value_attribute (die, rtl)
{ {
if ((unsigned long) val != (unsigned HOST_WIDE_INT) val) if ((unsigned long) val != (unsigned HOST_WIDE_INT) val)
abort (); abort ();
add_AT_int (die, DW_AT_const_value, (unsigned long) val); add_AT_unsigned (die, DW_AT_const_value, (unsigned long) val);
} }
} }
break; break;
...@@ -8474,6 +8474,11 @@ add_location_or_const_value_attribute (die, decl) ...@@ -8474,6 +8474,11 @@ add_location_or_const_value_attribute (die, decl)
if (rtl == NULL_RTX) if (rtl == NULL_RTX)
return; return;
/* If we don't look past the constant pool, we risk emitting a
reference to a constant pool entry that isn't referenced from
code, and thus is not emitted. */
rtl = avoid_constant_pool_reference (rtl);
switch (GET_CODE (rtl)) switch (GET_CODE (rtl))
{ {
case ADDRESSOF: case ADDRESSOF:
......
...@@ -1345,6 +1345,7 @@ extern rtx simplify_gen_subreg PARAMS ((enum machine_mode, ...@@ -1345,6 +1345,7 @@ extern rtx simplify_gen_subreg PARAMS ((enum machine_mode,
unsigned int)); unsigned int));
extern rtx simplify_replace_rtx PARAMS ((rtx, rtx, rtx)); extern rtx simplify_replace_rtx PARAMS ((rtx, rtx, rtx));
extern rtx simplify_rtx PARAMS ((rtx)); extern rtx simplify_rtx PARAMS ((rtx));
extern rtx avoid_constant_pool_reference PARAMS ((rtx));
/* In function.c */ /* In function.c */
extern rtx gen_mem_addressof PARAMS ((rtx, union tree_node *)); extern rtx gen_mem_addressof PARAMS ((rtx, union tree_node *));
......
...@@ -99,7 +99,6 @@ Boston, MA 02111-1307, USA. */ ...@@ -99,7 +99,6 @@ Boston, MA 02111-1307, USA. */
static rtx simplify_plus_minus PARAMS ((enum rtx_code, static rtx simplify_plus_minus PARAMS ((enum rtx_code,
enum machine_mode, rtx, rtx)); enum machine_mode, rtx, rtx));
static void check_fold_consts PARAMS ((PTR)); static void check_fold_consts PARAMS ((PTR));
static rtx avoid_constant_pool_reference PARAMS ((rtx));
/* Make a binary operation by properly ordering the operands and /* Make a binary operation by properly ordering the operands and
seeing if the expression folds. */ seeing if the expression folds. */
...@@ -138,7 +137,7 @@ simplify_gen_binary (code, mode, op0, op1) ...@@ -138,7 +137,7 @@ simplify_gen_binary (code, mode, op0, op1)
/* If X is a MEM referencing the constant pool, return the real value. /* If X is a MEM referencing the constant pool, return the real value.
Otherwise return X. */ Otherwise return X. */
static rtx rtx
avoid_constant_pool_reference (x) avoid_constant_pool_reference (x)
rtx x; rtx x;
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment