aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md12
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f74d64b..ea3e661 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Sat Nov 7 11:37:53 1998 Richard Henderson <rth@cygnus.com>
+
+ * i386.md (call_value_pop): If we're not popping anything,
+ defer to call_value.
+ (call_pop): Likewise defer to call.
+
Sat Nov 7 02:49:56 1998 Richard Henderson <rth@cygnus.com>
* function.c (purge_addressof): Clear purge_addressof_replacements
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index e1f026a..57195df 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -6101,6 +6101,12 @@ byte_xor_operation:
{
rtx addr;
+ if (operands[3] == const0_rtx)
+ {
+ emit_insn (gen_call (operands[0], operands[1]));
+ DONE;
+ }
+
if (flag_pic)
current_function_uses_pic_offset_table = 1;
@@ -6203,6 +6209,12 @@ byte_xor_operation:
{
rtx addr;
+ if (operands[4] == const0_rtx)
+ {
+ emit_insn (gen_call_value (operands[0], operands[1], operands[2]));
+ DONE;
+ }
+
if (flag_pic)
current_function_uses_pic_offset_table = 1;