public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/modula-2] Bugfix mc memset zero all nodes created by newNode.
@ 2022-09-05 22:40 Gaius Mulley
0 siblings, 0 replies; only message in thread
From: Gaius Mulley @ 2022-09-05 22:40 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:7b1a727b06c78e58dc94727d3b08939ab7d9b60c
commit 7b1a727b06c78e58dc94727d3b08939ab7d9b60c
Author: Gaius Mulley <gaiusmod2@gmail.com>
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 <gaiusmod2@gmail.com>
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<decl_node> (libc_memset (reinterpret_cast<void *> (d), 0, static_cast<size_t> (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,
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-09-05 22:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-05 22:40 [gcc/devel/modula-2] Bugfix mc memset zero all nodes created by newNode Gaius Mulley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).