[M3devel] [modula3/cm3] f77161: Fix CG internal error, when passing bitpacked arra...
Rodney M. Bates
rodney_bates at lcwb.coop
Wed Nov 22 17:57:22 CET 2017
This fix contains a line of endian-dependent code. I have no big endian machine
to test this on. It would be nice of somebody could test it on one. Just compile
and run the case below and see that the compile succeeds and it produces the output
even further below.
------------------------------------------------------------------------------------
Test program:
MODULE Main
; IMPORT Fmt
; IMPORT Stdio
; IMPORT Thread
; IMPORT Wr
; VAR GWr : Wr . T
; PROCEDURE WLI ( Tag : TEXT ; J : INTEGER )
= <* FATAL Thread . Alerted , Wr . Failure *>
BEGIN
Wr . PutText ( GWr , Tag )
; Wr . PutText ( GWr , Fmt . Int ( J ) )
; Wr . PutText ( GWr , Wr . EOL )
END WLI
; TYPE Byte = [ - 128 .. 127 ]
; TYPE Arr16 = ARRAY BOOLEAN OF BITS 8 FOR Byte
; TYPE Outer
= RECORD
Pad : BITS 6 FOR [ 0 .. 63 ] := 0
; Unaligned : BITS 16 FOR Arr16
END
; PROCEDURE P ( VALUE F : Arr16 )
= VAR I : INTEGER
; BEGIN
WLI ( "F[FALSE] = " , F [ FALSE ] )
; WLI ( "F[TRUE] = " , F [ TRUE ] )
; I := 10
END P
; PROCEDURE Do ( )
= VAR VOuter := Outer { 57 , Arr16 { 109 , 82 } }
; BEGIN
P ( VOuter . Unaligned )
; WLI ( "VOuter.Pad = " , VOuter . Pad )
; WLI ( "VOuter.Unaligned[FALSE] = " , VOuter . Unaligned [ FALSE ] )
; WLI ( "VOuter.Unaligned[TRUE] = " , VOuter . Unaligned [ TRUE ] )
END Do
; BEGIN
GWr := Stdio . stdout
; Do ( )
END Main
.
------------------------------------------------------------------------------------
Expected output:
F[FALSE] = 109
F[TRUE] = 82
VOuter.Pad = 57
VOuter.Unaligned[FALSE] = 109
VOuter.Unaligned[TRUE] = 82
------------------------------------------------------------------------------------
On 11/21/2017 04:35 PM, GitHub wrote:
> Branch: refs/heads/master
> Home: https://github.com/modula3/cm3
> Commit: f771611139da4f195e1ce02d894c4dbcf9eab33c
> https://github.com/modula3/cm3/commit/f771611139da4f195e1ce02d894c4dbcf9eab33c
> Author: Rodney Bates <rodney.m.bates at acm.org>
> Date: 2017-11-21 (Tue, 21 Nov 2017)
>
> Changed paths:
> M m3-sys/m3front/src/misc/CG.i3
> M m3-sys/m3front/src/misc/CG.m3
> M m3-sys/m3front/src/values/Formal.m3
>
> Log Message:
> -----------
> Fix CG internal error, when passing bitpacked array by value.
>
>
--
Rodney Bates
rodney.m.bates at acm.org
More information about the M3devel
mailing list