"directly called indirectly" wasn't a typo; I can't think of a better name for this pattern. :)
Currently, Sema treats foo() and (&foo)() both as direct calls of foo, for the purposes of overload resolution. CodeGen treats the latter as an indirect call. This allows one to write code that indirectly calls an unaddressable function, which can result in ICEs (yay pass_object_size).
It seems that some code relies on how Sema resolves (&foo)(), so I don't think we can simply ask AddressOfFunctionResolver to handle this for us.