Notes:
This makes it easier to create other synthetic functions, which don't need the SyntheticFunction instance to own the body as a std::string.
I should have done this as part of D43933, but at the time I thought what I was doing was better... oh well.
Why add getComdat() here? If we really want this to be NFC maybe this part should be separate.