Thanks for all your hints. Here is the updated patch
ChangeLog testsuite
2014-06-05 Kai Tietz kti...@redhat.com
PR target/46219
* gcc.target/i386/sibcall-4.c: Remove xfail.
ChangeLog
2014-06-05 Kai Tietz kti...@redhat.com
Richard Henderson r...@redhat.com
PR
On 06/05/2014 09:47 AM, Kai Tietz wrote:
+(define_insn *sibcall_intern
+ [(call (unspec [(mem:QI (match_operand:W 0 memory_operand))]
Probably best to use memory_nox32_operand here (and the other define_insn
patterns) too.
Otherwise ok.
r~
So after SIBLING_CALL_P flags gets now preserved in peep2_attempt, the
patch simplifies.
Regression tested for x86_64-unknown-linux-gnu, and i686-pc-cygwin.
Ok for apply (with ChangeLog plus testcase adjustment as done by
initial patch)?
Index: config/i386/i386.md
On 06/04/2014 05:37 AM, Kai Tietz wrote:
+(define_peephole2
+ [(set (match_operand:DI 0 register_operand)
+(match_operand:DI 1 memory_operand))
+ (call (mem:QI (match_operand:DI 2 register_operand))
+ (match_operand 3))]
+ TARGET_64BIT REG_P (operands[0])
+ REG_P
Hello,
This patch fixes PR/46219 by introducing special peephole-optimization. As we
can't set for new statement in peephole2-define SIBLING_CALL_P easily, I use
UNSPEC_PEEPSIB to do indentify sibling tail-call-case.
For avoiding modification of ix86_output_call_insn, I set SIBLING_CALL_P
On 06/03/2014 12:56 PM, Kai Tietz wrote:
+(define_insn *sibcall_intern
+ [(call (unspec [(mem:QI (match_operand:W 0 memory_operand))]
UNSPEC_PEEPSIB)
+ (match_operand 1))]
+
+ * SIBLING_CALL_P (insn) = 1; return ix86_output_call_insn (insn,
operands[0]);
+ [(set_attr type
- Original Message -
On 06/03/2014 12:56 PM, Kai Tietz wrote:
+(define_insn *sibcall_intern
+ [(call (unspec [(mem:QI (match_operand:W 0 memory_operand))]
UNSPEC_PEEPSIB)
+(match_operand 1))]
+
+ * SIBLING_CALL_P (insn) = 1; return ix86_output_call_insn (insn,
On 06/03/2014 01:15 PM, Kai Tietz wrote:
- Original Message -
On 06/03/2014 12:56 PM, Kai Tietz wrote:
+(define_insn *sibcall_intern
+ [(call (unspec [(mem:QI (match_operand:W 0 memory_operand))]
UNSPEC_PEEPSIB)
+(match_operand 1))]
+
+ * SIBLING_CALL_P (insn) = 1; return