view tests/mini/arrays1.d @ 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 1bb99290e03a
children
line wrap: on
line source

module arrays1;

extern(C) int printf(char*, ...);

void integer()
{
    auto arr = new int[16];
    arr[1] = 42;
    arr[6] = 555;
    print_int(arr);
    delete arr;
}

void floating()
{
    auto arr = new float[6];
    arr[1] = 3.14159265;
    arr[3] = 1.61803399;
    print_float(arr);
    delete arr;
}

void print_int(int[] arr)
{
    printf("arr[%lu] = [", arr.length);
    for (auto i=0; i<arr.length; i++)
        printf("%d,", arr[i]);
    printf("\b]\n");
}

void print_float(float[] arr)
{
    printf("arr[%lu] = [", arr.length);
    for (auto i=0; i<arr.length; i++)
        printf("%f,", arr[i]);
    printf("\b]\n");
}

void main()
{
    integer();
    floating();
}