http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50762
--- Comment #22 from Uros Bizjak <ubizjak at gmail dot com> 2011-11-10 19:05:29
UTC ---
(In reply to comment #21)
> But this is not quite true either. genpreds will *omit* generation of
> the explicit test (mode == VOIDmode || mode == GET_MODE (op)) if the
> predicate has as a sub-test a call to one of the standard predicates,
> arguing that "the standard predicate already did the test, so we don't
> have to repeat it". But the test performed by the standard predicates
> *does* comply with the more elaborate rule spelled out in the docs ...
Yeah, this is also what I thought at the first sight. But please don't forget
that additional c-code test effectively creates
(and (match_operand (...)
(match_test (call to c-code)))
and this construct will _always_ force generation of mode checks.