> +const char *const GCC_GENERATED_SUFFIX_TAGS[] = {
> + ".isra", ".constprop", ".part", ".__part", ".lto_priv", ".clone",
> + ".cold", ".hot"
I worry a bit that this list is hard to maintain. Perhaps at least
have an option to use a wild card of some sort?
> +
> +const char *const GCC_SPLIT_PART_TAGS[] = {".cold", ".hot"};
> +const char *const GCC_DOTTED_COPY_TAGS[] = {".llvm.", ".__part."};
The upper case is unusual coding style.
> + if (tail == "cold" || tail == "hot")
> + {
> + name.erase (dot);
> + continue;
> + }
Bad indent, also elsewhere.