I found some ambiguous wording in the c89(/c90) standard, where GCC and Clang disagree on the interpretation. It concerns the behavior of implicit function declarations, which were removed in c99, so this was never disambiguated.
↫ Sebastian at sebsite
I am not going pretend to understand any of this.

Undeclared functions was always a terrible feature from day 1. Even if you don’t intentionally use bad features like this, I’ve seen many code bases inadvertently trigger them through through language defaults and end up tripping on them anyways. No code should rely on this; it would be best to delete the feature altogether so it never comes up again, but…backwards compatibility.
This is the problem with C roping in historic quirks for backwards compatibility versus a modern language that doesn’t carry legacy baggage. Even if we want to overlook C’s propensity for memory faults, I still hate some aspects of the language like CPP/include files/forward declarations. Practically all modern languages have solved this. Alas, despite C’s shortcomings everything relies on it and it’s too big to fail so we keep propping it up. Despite all the baggage it’s still useful obviously, It is what it is.