www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - argument checking for IASM FPU opcodes

void a(){
asm{
fcmovb ST(2);
}
}

void b(){
asm{
fcmovb ST(0), ST(2);
}
}

void c(){
asm{
fcmovb ST, ST(2);
}
}


Case a is documented as "wrong" but produces reasonable code (DA C2).

Case b isn't documented as "right" and produces the unexpected and effectless
code (DA C0). "ST(2)" was dropped without any error message.

Case c is documented as "right" but fails to compile with the
message: bad type/size of operands 'fcmovb'

Thomas
Oct 16 2005