IMO your opinion is self-contradictory. On the one hand you say that mangling is depend on back-end and should be calculated in back-end. On the other hand, you want to introduce common limitation for all platforms.
Current mangle check is generally meaningless. At first it disallow some set of mangle which correct on dmd (With this still possible accept.). At second it allow some mangles which unacceptable in some case. Try to compile this code on GDC:
```
pragma(mangle, "?Call@Namespace@@YAXXZ") void Call();
```
But this mangle should be acceptable in windows dmd (this mangle defines C++ mangled name for void Namespace::Call(); function). Furthermore, D specification doesn't define any limitations for name mangling. 
Also, there is what is commonly accepted limitations (There aren't any standarts to mangled names). Ergo: pragma(mangle) should allow any mangle and pass it to check to glue/back-end.
Moreover, this changing allow me to write good postcondition to Declaration::mangle function. Output value for this function should satisfy back-end requirements.