Index: Stackx86.m3 =================================================================== RCS file: /usr/cvs/cm3/m3-sys/m3back/src/Stackx86.m3,v retrieving revision 1.113 diff -u -r1.113 Stackx86.m3 --- Stackx86.m3 6 Mar 2010 12:55:52 -0000 1.113 +++ Stackx86.m3 7 Mar 2010 04:42:39 -0000 @@ -1641,6 +1641,15 @@ really messy to cover all the special cases correctly *) IF sign THEN + + (* The method used here does not work for extracting zero bits. + * Make sure we are not asked to do that. + *) + IF NOT (stop2.loc = OLoc.imm AND TIntN.NE(stop2.imm, TZero)) THEN + t.Err("doextract: not able to extract and sign extend zero bits"); + END; + <* ASSERT stop2.loc = OLoc.imm AND TIntN.NE(stop2.imm, TZero) *> + find(t, stack0, Force.regset, RegSet { ECX }); find(t, stack1, Force.any); find(t, stack2, Force.anyreg);