Commit 7c866fb5 by Jim Wilson Committed by Jim Wilson

Fix bfd/archive.c miscompilation.

	* config/ia64/ia64.md (movdi): Don't call gen_movdi_symbolic if
	we have a SYMBOL_REF with SYMBOL_REF_FLAG set.

From-SVN: r35955
parent 3f2b640a
2000-08-24 Jim Wilson <wilson@cygnus.com>
* config/ia64/ia64.md (movdi): Don't call gen_movdi_symbolic if
we have a SYMBOL_REF with SYMBOL_REF_FLAG set.
2000-08-24 Jason Merrill <jason@redhat.com>
* dwarf2out.c (AT_flag, AT_int, AT_unsigned, AT_string, AT_ref,
......
......@@ -358,7 +358,15 @@
type of PIC address load. If this function gets deferred, we
may acquire information that changes the value of the
sdata_symbolic_operand predicate. */
if (rtx_equal_function_value_matters)
/* But don't delay for function pointers. Loading a function address
actually loads the address of the descriptor not the function.
If we represent these as SYMBOL_REFs, then they get cse'd with
calls, and we end up with calls to the descriptor address instead of
calls to the function address. Functions are not candidates for
sdata anyways. */
if (rtx_equal_function_value_matters
&& ! (GET_CODE (operands[1]) == SYMBOL_REF
&& SYMBOL_REF_FLAG (operands[1])))
emit_insn (gen_movdi_symbolic (operands[0], operands[1]));
else
ia64_expand_load_address (operands[0], operands[1]);
......
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