This is the mail archive of the gcc-help@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]

machine description problem




  Hi,


I wrote (try to !) a gcc 2.95.2 back end for our VM architecture. It
almost works
correctly but I still have some trouble.

First I would like to know why the block <code> inside the define_expand
is executed before the <move_operand> predicates is tested ?.

I thought that the predictate should be tested first.

So I don't understand the way to reject a bad insn in <movqi/hi/si> case
(FAIL
doesn't work and the spur.md is not that obvious)

Finally, when the <move_operand> predicate is executed (and reject the
insn) gcc crash.


What did I miss ?.



(define_expand "movsi"
  [(set (match_operand:SI 0 "nonimmediate_operand"
"=r,r,r,r,r,Q,o,m,>,m,Q")
	(match_operand:SI 1 "move_operand"         "r,i,Q,o,m,r,r,r,r,i,Q"))]
  ""
  "
{
  <code>
})



Thanks for your help.


Olivier Garbil
Palmware


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