This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Reload problem
- To: law at cygnus dot com
- Subject: Re: Reload problem
- From: Andreas Schwab <schwab at suse dot de>
- Date: 10 Nov 1999 13:39:05 +0100
- Cc: Joern Rennecke <amylaar at cygnus dot co dot uk>, gcc at gcc dot gnu dot org, gcc-patches at gnu dot org
- References: <2533.942218592@upchuck>
Jeffrey A Law <law@cygnus.com> writes:
|> In message <jevh7bqzjj.fsf@hawking.suse.de>you write:
|>
|> > |> (define_expand "divmodsi4"
|> > |> [(set (match_operand:SI 0 "general_operand" "")
|> > |> (div:SI (match_operand:SI 1 "general_operand" "")
|> > |> (match_operand:SI 2 "general_src_operand" "")))
|> > |> (set (match_operand:SI 3 "general_operand" "")
|> > |> (mod:SI (match_dup 1) (match_dup 2)))]
|> > |> "TARGET_68020 && !TARGET_5200"
|> > |> "")
|> >
|> > Thanks, that does help (after putting the required parallel around the
|> > sequence). What I still wonder is why this hasn't been yet triggered on
|> > the other architectures that have pretty much the same patterns.
|> 1. I don't see why you need expanders + patterns. There's no reason why
|> the expander can't serve both purposes. If Joern thinks otherwise he
|> should provide more details.
|>
|> 2. According to expand_twoval_binop the operands should be numbered:
|>
|> operand0 -- target 0
|> operand1 -- input 0
|> operand2 -- input 1
|> operand3 -- target 1
|>
|> So I think the original ordering of operands was correct.
|>
|> So basically, I don't see what was wrong with the original define_insn.
The problem lies in the order that the reloads are emitted. I have posted
a more detailed description in my original mail
(http://egcs.cygnus.com/ml/gcc/1999-09/msg00264.html). Unfortunately, the
problem cannot be reproduced with the current cvs, but since the reload
combination code is basically unchanged I think that the problem still
exists.
Andreas.
--
Andreas Schwab "And now for something
SuSE Labs completely different."
schwab@suse.de
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg