CTFE and DI: The Crossroads of D

Adam Wilson flyboynw at gmail.com
Thu May 10 11:35:49 PDT 2012


On Thu, 10 May 2012 11:32:27 -0700, deadalnix <deadalnix at gmail.com> wrote:

> Le 10/05/2012 20:22, Timon Gehr a écrit :
>> On 05/10/2012 08:15 PM, Adam Wilson wrote:
>>> On Thu, 10 May 2012 11:10:15 -0700, David Gileadi
>>> <gileadis at nspmgmail.com> wrote:
>>>
>>>> On 5/10/12 11:01 AM, Adam Wilson wrote:
>>>>> It does require some semantic information. And the solution I've seen
>>>>> seen most talked about here is some kind of attribute similar to  
>>>>> @pure
>>>>> that tells the compiler to include the implementation in the DI file.
>>>>
>>>> I may be off-base here, but this strikes me as a good case for a
>>>> pragma. No?
>>>
>>> Well, it's needs to be at a function level to be useful.
>>>
>>
>> pragmas can apply to declarations.
>>
>> The syntax is
>>
>> pragma(identifier,...) Declaration
>>
>> (Where Declaration can be the empty declaration, ';')
>>
>> pragma(keepImplementation) void foo(){ ... }
>
> You want to specify strip implementation, not keep implementation.
>
> Strip implementation may break things. Keeping it cannot. The default  
> behavior should be on the safe side of the medal.
>
> The DIfier can remove code if it knows that it isn't CTFEable or don't  
> worth inlining by default. Additional code removal can be specified by  
> attributes.

The problem is that it DOES NOT know if it's CTFEable or not. No analysis  
is performed prior to DI generation!

-- 
Adam Wilson
IRC: LightBender
Project Coordinator
The Horizon Project
http://www.thehorizonproject.org/


More information about the Digitalmars-d mailing list