Profiling some code I'd written recently, I found that goto-char was using 90% of CPU time in a large buffer with lots of properties and overlays. Setting inhibit-point-motion-hooks helped, but it occurs to me that the operation shouldn't have been expensive in the first place. Nothing in the buffer had a point motion hook or an intangible property, though, so the work goto-char was doing was pointless. In addition to allowing callers to bind inhibit-point-motion-hooks, what about tracking whether any property or overlay ever inserted into a buffer uses one of these uncommon facilities? This way, the common case is fast even without inhibit-point-motion-hooks.