The attached patch contains a (preliminary) fix and reproduction for the bug reported here:
https://bugs.llvm.org/show_bug.cgi?id=34484
The Itanium name mangling logic does not seem to handle void(*f)(void*) function pointers as struct members when compiling C++ code. The same code works fine for C.
This patch is not fit to merge as-is but may be a useful starting point for fuller investigation