For certain cases of inline functions written to comdat sections, GCC 5.x produces a weak symbol in addition, which would end up undefined in some cases.
This no longer seems to happen with GCC 6.x or newer, so this might not be strictly necessary. Also, when linking clang.exe, almost all symbols come from static libraries, so they just end up left as Lazy instead of Undefined, which makes the link succeed.