H1 2015 Priorities and Bare-Metal Programming
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Tue Feb 3 10:16:19 PST 2015
On 2/3/15 9:29 AM, Dicebot wrote:
> On Tuesday, 3 February 2015 at 08:31:24 UTC, Walter Bright wrote:
>> On 2/2/2015 8:36 PM, Daniel Murphy wrote:
>>> The user can modify the code to allow it to be inlined. There are a
>>> huge number
>>> of constructs that cause dmd's inliner to completely give up. If a
>>> function
>>> _must_ be inlined, the compiler needs to give an error if it fails.
>>
>> 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.
>
> This is _exactly_ why error message is needed.
I think the best route here - and the most in-the-spirit-of-D - is to
provide introspection on whether a function is being inlined or not.
Then we can always have in libraries:
bool uart(ubyte b)
{
static assert(__traits(inlined),
"Inlining of uart() must be supported.");
...
}
Andrei
More information about the Digitalmars-d
mailing list