Commit 0cdc04e8 by Steven Bosscher Committed by David Edelsohn

rs6000.c (rs6000_legitimize_address, [...]): Make sure an rtx is a SYMBOL_REF…

rs6000.c (rs6000_legitimize_address, [...]): Make sure an rtx is a SYMBOL_REF before calling get_pool_constant.

2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>

        * config/rs6000/rs6000.c (rs6000_legitimize_address,
        rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
        rtx is a SYMBOL_REF before calling get_pool_constant.

From-SVN: r136216
parent 3f6383d3
2008-05-30 Steven Bosscher <stevenb.gcc@gmail.com>
* config/rs6000/rs6000.c (rs6000_legitimize_address,
rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
rtx is a SYMBOL_REF before calling get_pool_constant.
2008-05-30 Eric Botcazou <ebotcazou@adacore.com> 2008-05-30 Eric Botcazou <ebotcazou@adacore.com>
* fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment. * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
......
...@@ -3746,6 +3746,7 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, ...@@ -3746,6 +3746,7 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
return gen_rtx_LO_SUM (Pmode, reg, x); return gen_rtx_LO_SUM (Pmode, reg, x);
} }
else if (TARGET_TOC else if (TARGET_TOC
&& GET_CODE (x) == SYMBOL_REF
&& constant_pool_expr_p (x) && constant_pool_expr_p (x)
&& ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (x), Pmode)) && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (x), Pmode))
{ {
...@@ -4191,6 +4192,7 @@ rs6000_legitimize_reload_address (rtx x, enum machine_mode mode, ...@@ -4191,6 +4192,7 @@ rs6000_legitimize_reload_address (rtx x, enum machine_mode mode,
} }
if (TARGET_TOC if (TARGET_TOC
&& GET_CODE (x) == SYMBOL_REF
&& constant_pool_expr_p (x) && constant_pool_expr_p (x)
&& ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (x), mode)) && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (get_pool_constant (x), mode))
{ {
...@@ -5041,6 +5043,7 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode) ...@@ -5041,6 +5043,7 @@ rs6000_emit_move (rtx dest, rtx source, enum machine_mode mode)
operands[1] = force_const_mem (mode, operands[1]); operands[1] = force_const_mem (mode, operands[1]);
if (TARGET_TOC if (TARGET_TOC
&& GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
&& constant_pool_expr_p (XEXP (operands[1], 0)) && constant_pool_expr_p (XEXP (operands[1], 0))
&& ASM_OUTPUT_SPECIAL_POOL_ENTRY_P ( && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (
get_pool_constant (XEXP (operands[1], 0)), get_pool_constant (XEXP (operands[1], 0)),
...@@ -12359,6 +12362,7 @@ print_operand_address (FILE *file, rtx x) ...@@ -12359,6 +12362,7 @@ print_operand_address (FILE *file, rtx x)
minus = XEXP (contains_minus, 0); minus = XEXP (contains_minus, 0);
symref = XEXP (minus, 0); symref = XEXP (minus, 0);
gcc_assert (GET_CODE (XEXP (minus, 1)) == SYMBOL_REF);
XEXP (contains_minus, 0) = symref; XEXP (contains_minus, 0) = symref;
if (TARGET_ELF) if (TARGET_ELF)
{ {
......
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