This patch fixes llvm.org/PR31402 by replacing map::__find_equal_key with __tree::__find_equal, which has already addressed the same undefined behavior.
Unfortunately I haven't been able to write a test case which causes the UBSAN diagnostic mentioned in the bug report. I can write tests which exercise the UB but for some reason they do not cause UBSAN to fail. Any help writing a test case would be appreciated.
Didn't we address this in http://wg21.link/LWG2542 ?