md file question

Jeffrey A Law law@cygnus.com
Tue Feb 1 22:25:00 GMT 2000


  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



More information about the Gcc mailing list