From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1499) id 7DB3B385AE58; Mon, 5 Sep 2022 22:40:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7DB3B385AE58 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1662417642; bh=YL4sM6IEJ4xHxkW6wGx+RBKKagjT+XoyNQ/neWj44Wc=; h=From:To:Subject:Date:From; b=ok9pperEywg13j9N8wqSrFBt5hd8M7CMcgHAnSpmlTIZCn0F84tlcXTy+Es7wvpdD 8HCHPlwHN8VzCzxa2BS+JVfMvhS8B7EOBVYt+L8imRsh6x02EvknbJDLrMljyyUGU6 b8zuz1HIBm7ktpLVSXPNisefW9eggPMiYNKVo+qI= MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" From: Gaius Mulley To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/modula-2] Bugfix mc memset zero all nodes created by newNode. X-Act-Checkin: gcc X-Git-Author: Gaius Mulley X-Git-Refname: refs/heads/devel/modula-2 X-Git-Oldrev: 3e960b43e6f9d0f548b7d9626364c6e42d685587 X-Git-Newrev: 7b1a727b06c78e58dc94727d3b08939ab7d9b60c Message-Id: <20220905224042.7DB3B385AE58@sourceware.org> Date: Mon, 5 Sep 2022 22:40:42 +0000 (GMT) List-Id: https://gcc.gnu.org/g:7b1a727b06c78e58dc94727d3b08939ab7d9b60c commit 7b1a727b06c78e58dc94727d3b08939ab7d9b60c Author: Gaius Mulley Date: Mon Sep 5 23:39:42 2022 +0100 Bugfix mc memset zero all nodes created by newNode. newNode now memset zero the allocated memory. Every node created uses newNode. Bug fix identified by Martin Liška. gcc/m2/ChangeLog: * m2/mc/decl.mod (newNode): Call memset of allocated memory. (doMakeBinary) call newNode. (makeBase) call newNode. * m2/Make-maintainer.in: Many bugfixes to allow mc-maintainer to succeed. * m2/mc-boot/Gdecl.c: Rebuilt. Signed-off-by: Gaius Mulley Diff: --- gcc/m2/Make-maintainer.in | 61 +++++++++++++++++++++++++---------------------- gcc/m2/mc-boot/Gdecl.c | 16 ++++--------- gcc/m2/mc/decl.mod | 12 ++++------ 3 files changed, 42 insertions(+), 47 deletions(-) diff --git a/gcc/m2/Make-maintainer.in b/gcc/m2/Make-maintainer.in index 572595a040f..c0491121fae 100644 --- a/gcc/m2/Make-maintainer.in +++ b/gcc/m2/Make-maintainer.in @@ -378,7 +378,7 @@ mc-push: force cp -p m2/mc-boot-gen/*.c $(srcdir)/m2/mc-boot/ cp -p m2/mc-boot-gen/*.h $(srcdir)/m2/mc-boot/ -mc-clean: force +mc-clean: force m2/mc-obj $(RM) m2/mc-boot-gen/*.[ch] m2/boot-bin/* m2/mc-boot/* m2/mc-boot-ch/* mc-maintainer: mc-clean mc-autogen mc-push mc-clean mc-bootstrap @@ -398,6 +398,9 @@ mc-help: force @echo "mc builds mc from Modula-2 sources, quickly" @echo "m2/pge build the parser generator (needed by mc-maintainer)" +m2/mc-obj: + mkdir $@ + mc-verify: mc-clean mc-bootstrap mc mv mc m2/boot-bin/mc.m2 @echo "verifying the two generations of mc" @@ -430,13 +433,13 @@ mc-stage2: force mc-devel: m2/boot-bin/mc-devel$(exeext) -m2/boot-bin/mc-devel$(exeext): $(objdir)/m2/gm2-auto/mcp1.mod \ - $(objdir)/m2/gm2-auto/mcp2.mod \ - $(objdir)/m2/gm2-auto/mcp3.mod \ - $(objdir)/m2/gm2-auto/mcp4.mod \ - $(objdir)/m2/gm2-auto/mcp5.mod \ - mcflex.c \ - m2/mc-boot-ch/Gabort.o +m2/boot-bin/mc-devel$(exeext): m2/mc-obj/mcp1.mod \ + m2/mc-obj/mcp2.mod \ + m2/mc-obj/mcp3.mod \ + m2/mc-obj/mcp4.mod \ + m2/mc-obj/mcp5.mod \ + mcflex.c \ + m2/mc-boot-ch/Gabort.o $(RM) -rf mc-obj mkdir mc-obj $(CC) -I$(srcdir)/m2/mc -c -g mcflex.c -o mc-obj/mcflex.o @@ -448,11 +451,11 @@ m2/boot-bin/mc-devel$(exeext): $(objdir)/m2/gm2-auto/mcp1.mod \ $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) $(srcdir)/m2/mc/mcMetaError.mod -o mc-obj/mcMetaError.o $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) $(srcdir)/m2/mc/mcOptions.mod -o mc-obj/mcOptions.o $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) $(srcdir)/m2/mc/mcComp.mod -o mc-obj/mcComp.o - $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/gm2-auto/mcp1.mod -o mc-obj/mcp1.o - $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/gm2-auto/mcp2.mod -o mc-obj/mcp2.o - $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/gm2-auto/mcp3.mod -o mc-obj/mcp3.o - $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/gm2-auto/mcp4.mod -o mc-obj/mcp4.o - $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/gm2-auto/mcp5.mod -o mc-obj/mcp5.o + $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/mc-obj/mcp1.mod -o mc-obj/mcp1.o + $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/mc-obj/mcp2.mod -o mc-obj/mcp2.o + $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/mc-obj/mcp3.mod -o mc-obj/mcp3.o + $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/mc-obj/mcp4.mod -o mc-obj/mcp4.o + $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) m2/mc-obj/mcp5.mod -o mc-obj/mcp5.o $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) $(srcdir)/m2/mc/wlists.mod -o mc-obj/wlists.o $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) $(srcdir)/m2/mc/alists.mod -o mc-obj/alists.o $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) $(srcdir)/m2/mc/symbolKey.mod -o mc-obj/symbolKey.o @@ -474,19 +477,19 @@ m2/boot-bin/mc-devel$(exeext): $(objdir)/m2/gm2-auto/mcp1.mod \ m2/gm2-libs-boot/RTcodummy.o \ m2/gm2-libs-boot/dtoa.o m2/gm2-libs-boot/ldtoa.o mc-obj/*o m2/mc-boot-ch/Gabort.o -m2/boot-bin/mc-opt$(exeext): $(objdir)/m2/gm2-auto/mcp1.mod \ - $(objdir)/m2/gm2-auto/mcp2.mod \ - $(objdir)/m2/gm2-auto/mcp3.mod \ - $(objdir)/m2/gm2-auto/mcp4.mod \ - $(objdir)/m2/gm2-auto/mcp5.mod \ - mcflex.c +m2/boot-bin/mc-opt$(exeext): m2/mc-obj/mcp1.mod \ + m2/mc-obj/mcp2.mod \ + m2/mc-obj/mcp3.mod \ + m2/mc-obj/mcp4.mod \ + m2/mc-obj/mcp5.mod \ + mcflex.c g++ -I$(srcdir)/m2/mc -c -g mcflex.c - $(BOOTGM2) -fsources -fm2-whole-program -g -I$(srcdir)/m2/mc:$(objdir)/m2/gm2-auto:$(srcdir)/m2/gm2-libs:$(srcdir)/m2/mc $(srcdir)/m2/mc/top.mod + $(BOOTGM2) -fsources -fm2-whole-program -g -I$(srcdir)/m2/mc:$(objdir)/m2/mc-obj:$(srcdir)/m2/gm2-libs:$(srcdir)/m2/mc $(srcdir)/m2/mc/top.mod m2/mc/decl.o: $(srcdir)/m2/mc/decl.mod $(BOOTGM2) $(MCOPTIONS) -I$(GM2PATH) -o $@ $(srcdir)/m2/mc/decl.mod -$(objdir)/m2/gm2-auto/%.mod: $(srcdir)/m2/mc/%.bnf +m2/mc-obj/%.mod: $(srcdir)/m2/mc/%.bnf $(PGE) $(PGE) -l $< -o $@ gm2-bootstrap: mc-devel @@ -541,7 +544,7 @@ m2/mc-boot-gen/$(SRC_PREFIX)%.c: $(srcdir)/m2/gm2-libs/%.mod m2/mc-boot-gen/$(SRC_PREFIX)%.h: $(srcdir)/m2/gm2-libs-iso/%.def ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc:$(srcdir)/m2/gm2-libs:$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< -m2/mc-boot-gen/$(SRC_PREFIX)%.c: m2/gm2-auto/%.mod +m2/mc-boot-gen/$(SRC_PREFIX)%.c: m2/mc-obj/%.mod ./mc $(MC_OPTIONS) -I$(srcdir)/m2/mc:$(srcdir)/m2/gm2-libs:$(srcdir)/m2/gm2-libs-iso $(EXTENDED_OPAQUE) --h-file-prefix=$(SRC_PREFIX) -o=$@ $< # mc-bootstrap compiles mc using the C version previously generated by mc-autogen. @@ -708,22 +711,22 @@ m2/gm2-compiler-paranoid/%.o: $(srcdir)/m2/gm2-compiler/%.mod m2/gm2-compiler-paranoid/%.o: m2/gm2-compiler-paranoid/%.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ -m2/gm2-compiler-paranoid/P0SyntaxCheck.o: $(objdir)/m2/gm2-compiler-paranoid/P0SyntaxCheck.mod +m2/gm2-compiler-paranoid/P0SyntaxCheck.o: m2/gm2-compiler-paranoid/P0SyntaxCheck.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ -m2/gm2-compiler-paranoid/P1Build.o: $(objdir)/m2/gm2-compiler-paranoid/P1Build.mod +m2/gm2-compiler-paranoid/P1Build.o: m2/gm2-compiler-paranoid/P1Build.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ -m2/gm2-compiler-paranoid/P2Build.o: $(objdir)/m2/gm2-compiler-paranoid/P2Build.mod +m2/gm2-compiler-paranoid/P2Build.o: m2/gm2-compiler-paranoid/P2Build.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ -m2/gm2-compiler-paranoid/P3Build.o: $(objdir)/m2/gm2-compiler-paranoid/P3Build.mod +m2/gm2-compiler-paranoid/P3Build.o: m2/gm2-compiler-paranoid/P3Build.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ -m2/gm2-compiler-paranoid/PHBuild.o: $(objdir)/m2/gm2-compiler-paranoid/PHBuild.mod +m2/gm2-compiler-paranoid/PHBuild.o: m2/gm2-compiler-paranoid/PHBuild.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ -m2/gm2-compiler-paranoid/PCBuild.o: $(objdir)/m2/gm2-compiler-paranoid/PCBuild.mod +m2/gm2-compiler-paranoid/PCBuild.o: m2/gm2-compiler-paranoid/PCBuild.mod $(GM2_2) $(GM2_O_S3) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc -I$(srcdir)/m2/gm2-libiberty $< -o $@ m2/gm2-libs-paranoid/host.o: $(srcdir)/m2/gm2-libs-ch/host.c m2/gm2-libs/gm2-libs-host.h @@ -803,5 +806,5 @@ m2/gm2-compiler-paranoid/M2Version.mod: m2/gm2-compiler-paranoid/M2Version.o: m2/gm2-compiler-paranoid/M2Version.mod $(GM2_2) $(GM2_FLAGS) -c -I$(srcdir)/m2/gm2-compiler -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-gcc $< -o $@ -$(objdir)/m2/gm2-compiler-paranoid/%.mod: $(srcdir)/m2/gm2-compiler/%.bnf $(PGE) +m2/gm2-compiler-paranoid/%.mod: $(srcdir)/m2/gm2-compiler/%.bnf $(PGE) $(PGE) -k -l $< -o $@ diff --git a/gcc/m2/mc-boot/Gdecl.c b/gcc/m2/mc-boot/Gdecl.c index 1bf6b01774c..e18842adb0b 100644 --- a/gcc/m2/mc-boot/Gdecl.c +++ b/gcc/m2/mc-boot/Gdecl.c @@ -6617,6 +6617,7 @@ static decl_node newNode (nodeT k) decl_node d; Storage_ALLOCATE ((void **) &d, sizeof (_T5)); + d = static_cast (libc_memset (reinterpret_cast (d), 0, static_cast (sizeof (decl_node)))); if (d == NULL) { M2RTS_HALT (-1); @@ -8309,8 +8310,7 @@ static decl_node makeUnary (nodeT k, decl_node e, decl_node res) } else { - Storage_ALLOCATE ((void **) &n, sizeof (_T5)); - n->kind = k; + n = newNode (k); switch (n->kind) { case min: @@ -8541,8 +8541,7 @@ static decl_node doMakeBinary (nodeT k, decl_node l, decl_node r, decl_node res) { decl_node n; - Storage_ALLOCATE ((void **) &n, sizeof (_T5)); - n->kind = k; + n = newNode (k); switch (n->kind) { case cmplx: @@ -8646,8 +8645,7 @@ static decl_node makeBase (nodeT k) { decl_node n; - Storage_ALLOCATE ((void **) &n, sizeof (_T5)); - n->kind = k; + n = newNode (k); switch (k) { case new_: @@ -18232,6 +18230,7 @@ static void visitIntrinsicFunction (alists_alist v, decl_node n, nodeProcedure p visitNode (v, n->binaryF.resultType, p); break; + case length: case adr: case size: case tsize: @@ -18250,11 +18249,6 @@ static void visitIntrinsicFunction (alists_alist v, decl_node n, nodeProcedure p visitNode (v, n->unaryF.resultType, p); break; - case length: - visitNode (v, n->unaryF.arg, p); - visitNode (v, n->unaryF.resultType, p); - break; - case throw_: visitNode (v, n->intrinsicF.args, p); visitNode (v, n->intrinsicF.type, p); diff --git a/gcc/m2/mc/decl.mod b/gcc/m2/mc/decl.mod index 0be1d2d3476..4e54155b362 100644 --- a/gcc/m2/mc/decl.mod +++ b/gcc/m2/mc/decl.mod @@ -32,7 +32,7 @@ FROM DynamicStrings IMPORT String, InitString, EqualArray, InitStringCharStar, K FROM StringConvert IMPORT CardinalToString, ostoc ; FROM mcOptions IMPORT getOutputFile, getDebugTopological, getHPrefix, getIgnoreFQ, getExtendedOpaque, writeGPLheader, getGccConfigSystem ; FROM FormatStrings IMPORT Sprintf0, Sprintf1, Sprintf2, Sprintf3 ; -FROM libc IMPORT printf ; +FROM libc IMPORT printf, memset ; FROM mcMetaError IMPORT metaError1, metaError2, metaError3, metaErrors1, metaErrors2 ; FROM mcError IMPORT errorAbort0, flushErrors ; @@ -760,6 +760,7 @@ VAR d: node ; BEGIN NEW (d) ; + d := memset (d, 0, SIZE (node)) ; IF d=NIL THEN HALT @@ -4316,9 +4317,8 @@ BEGIN THEN RETURN e ELSE - NEW (n) ; + n := newNode (k) ; WITH n^ DO - kind := k ; CASE kind OF min, @@ -4516,9 +4516,8 @@ PROCEDURE doMakeBinary (k: nodeT; l, r: node; res: node) : node ; VAR n: node ; BEGIN - NEW (n) ; + n := newNode (k) ; WITH n^ DO - kind := k; CASE kind OF cmplx, @@ -4721,9 +4720,8 @@ PROCEDURE makeBase (k: nodeT) : node ; VAR n: node ; BEGIN - NEW (n) ; + n := newNode (k) ; WITH n^ DO - kind := k ; CASE k OF new,