"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