http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48835
--- Comment #12 from Thorsten Glaser <tg at mirbsd dot org> 2011-06-14 10:59:03 UTC --- Why not patch the frontend to magically make System.Address a pointer type for the backend to deal with? That way, no functions have to be changed, and potential other targets with “weird” calling conventions immediately share in the benefit. As for the “compatibility trick”, it works the other way around, only when a pointer-returning function is called expecting integers. Here, we have an integer-returning function by mistake.