With GCC 9.2 and latest master(ab9de435880c9d77e4137b65050591ef2d14f809) I'm getting these warnings:
interfaces/chain.cpp: In member function 'virtual Optional<int> interfaces::{anonymous}::LockImpl::findFork(const uint256&, Optional<int>*)':
interfaces/chain.cpp:140:16: warning: '*((void*)&<anonymous> +4)' may be used uninitialized in this function [-Wmaybe-uninitialized]
140 | return nullopt;
| ^~~~~~~
interfaces/chain.cpp: In member function 'virtual Optional<int> interfaces::{anonymous}::LockImpl::getHeight()':
interfaces/chain.cpp:140:16: warning: '*((void*)&<anonymous> +4)' may be used uninitialized in this function [-Wmaybe-uninitialized]
140 | return nullopt;
| ^~~~~~~
interfaces/chain.cpp: In member function 'virtual Optional<int> interfaces::{anonymous}::LockImpl::findLocatorFork(const CBlockLocator&)':
interfaces/chain.cpp:140:16: warning: '*((void*)&<anonymous> +4)' may be used uninitialized in this function [-Wmaybe-uninitialized]
140 | return nullopt;
| ^~~~~~~
interfaces/chain.cpp: In member function 'virtual Optional<int> interfaces::{anonymous}::LockImpl::findFirstBlockWithTimeAndHeight(int64_t, int, uint256*)':
interfaces/chain.cpp:140:16: warning: '*((void*)&<anonymous> +4)' may be used uninitialized in this function [-Wmaybe-uninitialized]
140 | return nullopt;
Seems to be related to #18052 but with less clear fix (replacing nullopt with MakeOptional(false...) is a bad fix IMHO)
Note, I don't see these warnings when compiling with clang 9.0.1