Mercurial > projects > ldc
view tests/mini/sextzext.d @ 978:6a32d2e18175
Fix a latent bug in the asm code.
I think that technically, using "*m0" instead of "*0" allows LLVM to pick
between using the same memory as output 0 and using a new memory location.
(So far I haven't been able to construct a testcase that actually breaks
because of this, though)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 18 Feb 2009 03:38:12 +0100 |
parents | cc40db549aea |
children |
line wrap: on
line source
module mini.sextzext; void main() { byte sb = sextreturn1(); short ss = sextreturn2(); assert(ss == -2); assert(sb == -2); assert(sextparam1(-42) == -42); assert(sextparam2(-42) == -42); ubyte ub = zextreturn1(); ushort us = zextreturn2(); assert(ub == 2); assert(us == 2); assert(zextparam1(42) == 42); assert(zextparam2(42) == 42); assert(getchar() == 'a'); assert(passchar('z') == 'z'); } byte sextreturn1() { return -2; } short sextreturn2() { return -2; } ubyte zextreturn1() { return 2; } ushort zextreturn2() { return 2; } byte sextparam1(byte b) { return b; } short sextparam2(short s) { return s; } ubyte zextparam1(ubyte b) { return b; } ushort zextparam2(ushort s) { return s; } char getchar() { return 'a'; } char passchar(char ch) { return ch; }