Mercurial > projects > ldc
view ldc-posix-tango @ 1418:f5f8c21ce6ef
Make "`aa[key]`" use the same runtime call as "`key in aa`". The runtime calls
these were using were different, but with equivalent definitions.
With `ldc -O3`, the following functions now all compile to the exact same code:
{{{
int[int] y;
void foo(int x) {
if (x in y) {
auto z = x in y;
sink(*z);
}
}
void bar(int x) {
if (x in y) {
sink(y[x]);
}
}
void baz(int x) {
if (auto p = x in y) {
sink(*p);
}
}
}}}
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Mon, 25 May 2009 12:50:40 +0200 |
parents | 8403fec8c34c |
children |
line wrap: on
line source
ignore=object compiler=ldc inifile=ldc.rebuild.conf exeext= objext=o version=LLVM version=LDC noversion=DigitalMars noversion=GNU testversion=linux testversion=darwin testversion=freebsd testversion=Unix testversion=Posix testversion=Windows testversion=Win32 testversion=Win64 testversion=mingw32 testversion=X86 testversion=PPC testversion=X86_64 testversion=PPC64 testversion=D_InlineAsm testversion=D_InlineAsm_X86 testversion=D_InlineAsm_PPC testversion=D_InlineAsm_X86_64 testversion=D_InlineAsm_PPC64 testversion=LLVM_InlineAsm_X86 testversion=LittleEndian testversion=BigEndian testversion=LLVM64 testversion=PIC testversion=Tango [compile] oneatatime=yes cmd=ldmd -c $i flag=$i incdir=-I$i libdir=-L-L$i optimize=-O3 version=-version=$i [link] oneatatime=yes cmd=ldc $i -of$o libdir=-L-L$i lib=-L-l$i flag=-L$i [liblink] safe=yes oneatatime=yes cmd=ar rc $o $i libdir= lib= flag= [postliblink] cmd=ranlib $i [shliblink] shlibs=no [dyliblink] dylibs=no