digitalmars.D.bugs - [Issue 18238] New: Templates only used during CTFE shouldn't be
- d-bugmail puremagic.com (95/96) Jan 14 2018 https://issues.dlang.org/show_bug.cgi?id=18238
https://issues.dlang.org/show_bug.cgi?id=18238 Issue ID: 18238 Summary: Templates only used during CTFE shouldn't be code-gened Product: D Version: D2 Hardware: x86_64 OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: greensunny12 gmail.com The string of `foo` shouldn't make it to the object file: ``` auto foo()() { // shouldn't appear in the object file return "My super long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long string"; } void main(string[] args) { import core.stdc.stdio; static immutable s = foo()[0..2]; printf("%.*s", 2, s.ptr); } ``` ``` .text._D3foo__TQhZQkFNaNbNiNfZAya segment assume CS:.text._D3foo__TQhZQkFNaNbNiNfZAya _D3foo__TQhZQkFNaNbNiNfZAya: push RBP mov RBP,RSP lea RDX,_TMP0 PC32[RIP] mov EAX,05F7h pop RBP ret add [RAX],AL .text._D3foo__TQhZQkFNaNbNiNfZAya ends minfo segment dd offset FLAT:_D3foo12__ModuleInfoZ 64 db 000h,000h,000h,000h ;.... minfo ends ``` ```cat foo.o | grep -a "long": ;I Digital Mars D v2.078.0foo.d/home/seb/dlang/dmd/srcfoounsigned longchaq_Array_charlength`#ptry_D3foo4mainFAAyaZ1syAa~ ~_Array_ucentlength`#ptr foo.foo!().foo_D3foo__TQhZQkFNaNbNiNfZAya~9ΓΏ_Dmain9_D3foo__TQhZQkFNaNbNiNfZAya5MyMy super long long long long long long long long long long long long long long long long long ^[[?1;2c long long long long long long long long long long long long long long long ``` --
Jan 14 2018