I think this is covered in "10.5.5 Match-Anything Pattern Rules"
If you do not mark the match-anything rule as terminal, then it is
non-terminal. A non-terminal match-anything rule cannot apply to a
file name that indicates a specific type of data. A file name
indicates a specific type of data if some non-match-anything implicit
rule target matches it.
For example, the file name `foo.c' matches the target for the pattern
rule `%.c : %.y' (the rule to run Yacc). Regardless of whether this
rule is actually applicable (which happens only if there is a file
`foo.y'), the fact that its target matches is enough to prevent
consideration of any non-terminal match-anything rules for the file
`foo.c'. Thus, `make' will not even consider trying to make `foo.c' as
an executable file from `foo.c.o', `foo.c.c', `foo.c.p', etc.
...which is some of the text that you're patching. Sorry, should have looked
at the patch first.
That said, I don't thinking bringing up a particular case in match-any rule
processing is helpful in that earlier page about implicit-rules; match-any
rules are the particular case while implicit-rules are the general case, so
the detail belongs in the description of the former, as it is now.
Calling out being the prerequisite of a implicit-rule blocks non-terminal
match-any processing? Hmm, I was going to say that it's implied by the last
paragraph on the page, but that paragraph is too restrictive, implying
.SUFFIXES and similar are involved in the creation of the dummy rules.
However, even without dummy rules (as seen in the "-p" output), make will
refuse to use a non-terminal match-any rule for a prerequisite. Something
does need to be reworded there.