Commit b848ded1 by Jan Hubicka Committed by Jan Hubicka

i386.md (call_pop, [...]): Do not set current_function_uses_pic_offset_table for…

i386.md (call_pop, [...]): Do not set current_function_uses_pic_offset_table for calls to static functions...

	* i386.md (call_pop, call, call_value_pop): Do not set
	current_function_uses_pic_offset_table for calls to static
	functions or indirect calls.

From-SVN: r34916
parent 12c2c7aa
Sat Jul 8 01:38:25 MET DST 2000 Jan Hubicka <jh@suse.cz>
* i386.md (call_pop, call, call_value_pop): Do not set
current_function_uses_pic_offset_table for calls to static
functions or indirect calls.
2000-07-07 Jim Wilson <wilson@cygnus.com> 2000-07-07 Jim Wilson <wilson@cygnus.com>
* config/ia64/ia64.c (rws_access_reg): New local write_count. If * config/ia64/ia64.c (rws_access_reg): New local write_count. If
......
...@@ -8200,11 +8200,12 @@ ...@@ -8200,11 +8200,12 @@
emit_insn (gen_call (operands[0], operands[1])); emit_insn (gen_call (operands[0], operands[1]));
DONE; DONE;
} }
/* Static functions and indirect calls don't need
/* ??? Not true for calls to static functions. */ current_function_uses_pic_offset_table. */
if (flag_pic) if (flag_pic
&& constant_call_address_operand (operands[1], SImode)
&& !SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
current_function_uses_pic_offset_table = 1; current_function_uses_pic_offset_table = 1;
if (! call_insn_operand (operands[0], QImode)) if (! call_insn_operand (operands[0], QImode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
}") }")
...@@ -8254,10 +8255,12 @@ ...@@ -8254,10 +8255,12 @@
"" ""
" "
{ {
/* ??? Not true for calls to static functions. */ /* Static functions and indirect calls don't need
if (flag_pic) current_function_uses_pic_offset_table. */
if (flag_pic
&& constant_call_address_operand (operands[1], SImode)
&& !SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
current_function_uses_pic_offset_table = 1; current_function_uses_pic_offset_table = 1;
if (! call_insn_operand (operands[0], QImode)) if (! call_insn_operand (operands[0], QImode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
}") }")
...@@ -8314,11 +8317,12 @@ ...@@ -8314,11 +8317,12 @@
emit_insn (gen_call_value (operands[0], operands[1], operands[2])); emit_insn (gen_call_value (operands[0], operands[1], operands[2]));
DONE; DONE;
} }
/* Static functions and indirect calls don't need
/* ??? Not true for calls to static functions. */ current_function_uses_pic_offset_table. */
if (flag_pic) if (flag_pic
&& constant_call_address_operand (operands[1], SImode)
&& !SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
current_function_uses_pic_offset_table = 1; current_function_uses_pic_offset_table = 1;
if (! call_insn_operand (operands[1], QImode)) if (! call_insn_operand (operands[1], QImode))
XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0)); XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
}") }")
...@@ -8331,10 +8335,12 @@ ...@@ -8331,10 +8335,12 @@
"" ""
" "
{ {
/* ??? Not true for calls to static functions. */ /* Static functions and indirect calls don't need
if (flag_pic) current_function_uses_pic_offset_table. */
if (flag_pic
&& constant_call_address_operand (operands[1], SImode)
&& !SYMBOL_REF_FLAG (XEXP (operands[1], 0)))
current_function_uses_pic_offset_table = 1; current_function_uses_pic_offset_table = 1;
if (! call_insn_operand (operands[1], QImode)) if (! call_insn_operand (operands[1], QImode))
XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0)); XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
}") }")
......
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