https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108261
--- Comment #19 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Gaius Mulley from comment #18) > For the runtime perspective then your layered approach is much cleaner. indeed .. > It would be good to allow users to be able to use pim and some iso > functionality or visa versa. So we have: 1. some content that is common (unequivocally) = com 2. some content that must be local to iso (it conflicts with 3) = iso 3. some content that must be local to pim (it conflicts with 2) = pim 4. some iso content that could also be used by pim = ixt 5. some pim content that could also be used by iso = pxt assuming we cannot combine ixt and pxt (because doing so would make it impossible to have a 'strict' mode) ==== we could avoid a layering violation thus: fiso (strict) = iso + ixt + com fiso (non-strict) = iso + ixt + pxt + com fpim* (strict?) pim + pxt + com fpim* (non-strict) pim + pxt + ixt + com ===== still seems overly complex (but workable) .. Of course, if we can alter the mangling of the iso and pim content so that it does not conflict .. .. then IMO we can just have one combined library and the FE should be responsible for disallowing interfaces that are not permitted by the selected dialect. (i.e. if the code never refers to a disallowed symbol, then it does not matter if the library contains it.)