"Walter Bright"  wrote in message news:maq10s$2avu$1...@digitalmars.com...

A separate message with a pragmatic difficulty with your suggestion.

Different compilers will have different inlining capabilities. Different versions of the same compiler may behave differently. This means that sometimes a user may get a compilation failure, sometimes not. It's highly brittle.

So enter the workaround code. Different compilers and different versions will require different workaround code. Is this really reasonable for users to put up with? And will they really want to be running the workaround code when they upgrade the compiler and now it could have inlined it?

I don't expect this to be a huge problem, because most functions marked with forceinline would be trivial.

eg. setREG(ubyte val) { volatileStore(cast(ubyte*)0x1234, val); }

This function only exists to give a nicer interface to the register. If the compiler can't inline it, I want to know about it at compilation time rather than later.

Again, it's for those cases that would just be done with macros in C. Where the code should always be inlined but doing it manually the source would lead to maintenance problems.

Reply via email to