This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Genrecog bugfix version 2


On Fri, Aug 27, 1999 at 11:01:04PM +0200, Jan Hubicka wrote:
> It is pretty simple. You may find it in my fmul patch for the backend.
> But I believe the most trivial example is:

[Translated -- and this is what I'm looking at right now. ]

(define_insn ""
  [(set:HI (subreg:HI (match_operand:SI 0 "register_operand" "") 0)
           (subreg:HI (match_operand:SI 1 "register_operand" "") 0))]
  ""
  "x")

(define_insn ""
  [(set:HI (match_operand:HI 0 "register_operand" "")
           (match_operand:HI 1 "register_operand" ""))]
  ""
  "y")

> Will be proved as disjunct (as place of subreg:HI will be tested with
> match_operand:HI, this is ok, but second subreg;HI will be compared
> with first match_operand:SI (and proved to be disjunct), because trees
> will get out of sync.

It does not appear to be so.  If I walk through the generated code by
hand, I see that everything is correct.

> My patch does the trick by comparing strings of the second subreg "b"
> and the match_operand:SI "aa" and skipping tests in the second until
> string "b" is reached (so it walks to match_operand:HI)

I still do not understand what you are doing, unfortunately.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]