"Tomas Svensson" <[EMAIL PROTECTED]> writes:

> So I guess the problem is somehow caused by global common
> subexpression elimination. Could it be that gcse changes the insn in
> some way, making it unrecognizable by the usual define_insn's?

gcse will never convert a recognizable insn into an unrecognizable
insn.

> Should
> I use (unspec ..) or (clobber ..) instead of (use ..) (as suggested in
> GCC Internals, Side effects)? If so, what is the difference, really?

You still haven't showed us the actual insn which failed to match.

The problem is that whatever that insn looks like, there is no
define_insn which matches it.  For purposes of matching, a
define_expand does not count.

The difference between unspec, clobber, and use is that unspec tells
the compiler nothing, clobber tells the compiler that the register was
clobbered, and use tells the compiler that the register was used but
not changed.

Ian

Reply via email to