DMD hackers: pragma(address): Is this possible?
Daniel Murphy via Digitalmars-d
digitalmars-d at puremagic.com
Tue Nov 25 06:44:02 PST 2014
"Johannes Pfau" wrote in message news:m522gv$1rav$1 at digitalmars.com...
> Good idea, this works and results in equal ASM. A minor drawback is
> that this emits an additional function (even with always inline), but
> that's a problem that also occurs in other contexts and I've got a
> workaround for that.
Awesome.
> Inlining in GDC right now only works across modules when templates are
> used. Templating the PORTB property doesn't work (PORTB()() is not an
> lvalue when taking the address &PORTB).
> So I'll probably have to implement cross-module inlining then.
Will it be cross-module inlined if it's an alias to a templated function
instantation?
module a;
ref ubyte IOREG(size_t addr)() { return *cast(ubyte*)addr; }
alias PORTA = IOREG!(0x10000);
alias PORTB = IOREG!(0x10001);
==========
module b;
import a;
void main()
{
auto x = &PORTA;
PORTB |= 7;
}
More information about the Digitalmars-d
mailing list