[Issue 18238] New: Templates only used during CTFE shouldn't be code-gened
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Jan 14 22:11:53 UTC 2018
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 at puremagic.com
Reporter: greensunny12 at 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 at PC32[RIP]
mov EAX,05F7h
pop RBP
ret
add [RAX],AL
.text._D3foo__TQhZQkFNaNbNiNfZAya ends
minfo segment
dd offset FLAT:_D3foo12__ModuleInfoZ at 64
db 000h,000h,000h,000h ;....
minfo ends
```
```
> cat foo.o | grep -a "long"
:
;I at Digital Mars D v2.078.0foo.d/home/seb/dlang/dmd/srcfoounsigned
longchaq_Array_charlength`#ptry_D3foo4mainFAAyaZ1syAa~
~_Array_ucentlength`#ptrÏ# 9D main_DmaiargsÔ`
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
```
--
More information about the Digitalmars-d-bugs
mailing list