view tests/mini/asm7.d @ 632:df196c8dea26

Updated to latest LLVM trunk, function notes have been removed and merged with parameter attributes, which have been renamed to just attributes. Nothing seems to have broke!
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 01 Oct 2008 23:17:14 +0200
parents 1bb99290e03a
children 4ac97ec7c18e
line wrap: on
line source

module tangotests.asm7;

// test massive label collisions (runtime uses Loverflow too)

void main()
{
    int a = add(1,2);
    int s = sub(1,2);
    assert(a == 3);
    assert(s == -1);
}

int add(int a, int b)
{
    int res;
    asm
    {
        mov EAX, a;
        add EAX, b;
        jo Loverflow;
        mov res, EAX;
    }
    return res;
Loverflow:
    assert(0, "add overflow");
}

int sub(int a, int b)
{
    int res;
    asm
    {
        mov EAX, a;
        sub EAX, b;
        jo Loverflow;
        mov res, EAX;
    }
    return res;
Loverflow:
    assert(0, "sub overflow");
}