On Thu, 05 Feb 2009 16:21:54 +0300, Don <nos...@nospam.com> wrote:

Frits van Bommel wrote:
Walter Bright wrote:
Frits van Bommel wrote:
Is it really that hard? Can't you just detect this case (non-void function without a 'return' at the end but with inline asm inside)?

Since the compiler should know the calling convention[1], the register that will contain the return value of the function should be a simple lookup (based on target architecture, cc and return type).
Just add that register as an output of the inline asm and return it...

dmd doesn't attempt to figure out which register is the return value. It just assumes that the registers specified by the ABI for the function's return type have the proper return value in them.
That isn't an option for LDC, which is why I suggested another approach.

What's the difference? Walter's approach assumes there's a "return EAX;" at the end of every function returning an int, for example; your approach seems to be to add it.

FWIW, Microsoft C++ Compiler does the same.

Reply via email to