Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-05 Thread Kai Tietz
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

Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-05 Thread Richard Henderson
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~

Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-04 Thread Kai Tietz
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

Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-04 Thread Richard Henderson
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

[patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-03 Thread Kai Tietz
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

Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-03 Thread Richard Henderson
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

Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-03 Thread Kai Tietz
- 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,

Re: [patch i386]: Fix PR/46219 Generate indirect jump instruction

2014-06-03 Thread Richard Henderson
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