Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!husc6!seismo!munnari!vuwcomp!newbery From: newbery@vuwcomp.UUCP Newsgroups: comp.sys.mac Subject: Code generation bug in MPW Pascal Message-ID: <12620@vuwcomp.UUCP> Date: Sun, 8-Feb-87 23:37:12 EST Article-I.D.: vuwcomp.12620 Posted: Sun Feb 8 23:37:12 1987 Date-Received: Wed, 11-Feb-87 07:34:35 EST Organization: Comp Sci, Victoria Univ., Wellington, New Zealand Lines: 36 Keywords: MPW, Pascal MPW Pascal can generate bad code when widening a signedByte to a char. Consider the following code fragment. ---------------------------------------------------------------------- VAR p : Ptr; PROCEDURE test(ch:CHAR); BEGIN {$R+ } ch := CHR(ORD(ch) MOD 128); {--- this statement will fail with a CHECK ERROR ---} . . END; BEGIN . . p^ := $FF; . . test(CHAR(p^)); ------------------------------------------------------------------------ MPW Pascal generates an EXT.W to widen the signedByte to a Word (CHAR is word aligned), thus $FF becomes $FFFF instead of $00FF and test falls over with a CHECK ERROR. This may or may not be of interest to someone :-) -- Michael Newbery ACSnet: newbery@vuwcomp.nz UUCP: {ubc-vision,alberta}!calgary!vuwcomp!newbery Une boule qui roule tue les poules. (Landslides kill chickens)