From 863202684dff775ae4a3e576f77044474384d41f Mon Sep 17 00:00:00 2001
From: Gaius Mulley <gaiusmod2@gmail.com>
Date: Sat, 10 Feb 2024 02:18:54 +0000
Subject: [PATCH] PR modula2/113848 modula2 does not build with clang

Re-write address arithmetic in gm2-libs/SArgs.mod:GetArg
to avoid (void *) computation.  mc treats ADDRESS as (char *)
but does not cast user type (PtrToChar) to (char *) when
performing address arithmetic.

gcc/m2/ChangeLog:

	PR modula2/113848
	* gm2-libs/SArgs.mod (GetArg): Re-write address arithmetic
	to avoid (void *) computation.

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
---
 gcc/m2/gm2-libs/SArgs.mod | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gcc/m2/gm2-libs/SArgs.mod b/gcc/m2/gm2-libs/SArgs.mod
index d6cb448d497a..3c3fe8d85a18 100644
--- a/gcc/m2/gm2-libs/SArgs.mod
+++ b/gcc/m2/gm2-libs/SArgs.mod
@@ -60,12 +60,15 @@ if defined(GM2_DEBUG_SARGS)
 PROCEDURE GetArg (VAR s: String; n: CARDINAL) : BOOLEAN ;
 VAR
    i  : INTEGER ;
+   a  : ADDRESS ;
    ppc: PtrToPtrToChar ;
 BEGIN
    i := VAL (INTEGER, n) ;
    IF i < GetArgC ()
    THEN
-      ppc := ADDRESS (ADDRESS (GetArgV ()) + (n * TSIZE (PtrToChar))) ;
+      a := ADDRESS (GetArgV ()) ;
+      INC (a, n * TSIZE (PtrToChar)) ;
+      ppc := a ;
       s   := InitStringCharStar (ppc^) ;
       RETURN TRUE
    ELSE
-- 
GitLab