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).