This is the mail archive of the gcc@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: md file question


  In message <20000201215653.B283@wolery.cumb.org>you write:
  > What's the difference between
  > 
  > (define_expand "call"
  >   [(call (match_operand 0 "" "")
  > 	 (match_operand 1 "" "")
  >    (clobber (reg:SI 17))]
  >   ...)
  > 
  > and
  > 
  > (define_expand "call"
  >   [(parallel[(call (match_operand 0 "" "")
  > 		   (match_operand 1 "" "")
  > 	     (clobber (reg:SI 17))])]
  >   ...)
  > 
  > ?  What if they were (define_insn) instead?
You've hit on one of the more subtle issues in md files.

The first generates two insns when it's called -- one for the call expression
another for the clobber expression.

The second generates a single insn that has two components -- the call and the
clobber.

They are not equivalent.

If those were define_insns they would be equivalent.

jeff


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