https://gcc.gnu.org/g:76e591200f54226290ddb49b8ac6231a694bf882

commit r15-300-g76e591200f54226290ddb49b8ac6231a694bf882
Author: Gaius Mulley <gaiusm...@gmail.com>
Date:   Tue May 7 19:24:08 2024 +0100

    PR modula2/114133 bugfix constants must be cast prior to vararg call
    
    This bug fix corrects the test codes below by converting the constant
    literals to the type required by C.  In the testcases below the values, 1
    etc were converted into the INTEGER type before being passed to a C
    vararg function.  By default in modula2 constant literal ordinals are
    represented as the ZTYPE (the largest GCC integer type node).
    
    gcc/testsuite/ChangeLog:
    
            PR modula2/114133
            * gm2/extensions/run/pass/callingc10.mod: Convert constant
            literal numbers into INTEGER.
            * gm2/extensions/run/pass/callingc11.mod: Ditto.
            * gm2/extensions/run/pass/vararg2.mod: Ditto.
            * gm2/iso/run/pass/packed.mod: Emit a printf as a runtime
            diagnostic.
    
    Signed-off-by: Gaius Mulley <gaiusm...@gmail.com>

Diff:
---
 gcc/testsuite/gm2/extensions/run/pass/callingc10.mod | 6 +++---
 gcc/testsuite/gm2/extensions/run/pass/callingc11.mod | 6 +++---
 gcc/testsuite/gm2/extensions/run/pass/vararg2.mod    | 6 +++---
 gcc/testsuite/gm2/iso/run/pass/packed.mod            | 2 ++
 4 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/gcc/testsuite/gm2/extensions/run/pass/callingc10.mod 
b/gcc/testsuite/gm2/extensions/run/pass/callingc10.mod
index 3a2d3e210dcc..0c26fedf8453 100644
--- a/gcc/testsuite/gm2/extensions/run/pass/callingc10.mod
+++ b/gcc/testsuite/gm2/extensions/run/pass/callingc10.mod
@@ -4,13 +4,13 @@ FROM cvararg IMPORT funcptr ;
 FROM SYSTEM IMPORT ADR ;
 
 BEGIN
-   IF funcptr (1, "hello", 5) = 1
+   IF funcptr (INTEGER (1), "hello", INTEGER (5)) = INTEGER (1)
    THEN
    END ;
-   IF funcptr (1, "hello" + " ", 6) = 1
+   IF funcptr (INTEGER (1), "hello" + " ", INTEGER (6)) = INTEGER (1)
    THEN
    END ;
-   IF funcptr (1, "hello" + " " + "world", 11) = 1
+   IF funcptr (INTEGER (1), "hello" + " " + "world", INTEGER (11)) = INTEGER 
(1)
    THEN
    END
 END callingc10.
diff --git a/gcc/testsuite/gm2/extensions/run/pass/callingc11.mod 
b/gcc/testsuite/gm2/extensions/run/pass/callingc11.mod
index 9b8cb82d645f..d71026ee35df 100644
--- a/gcc/testsuite/gm2/extensions/run/pass/callingc11.mod
+++ b/gcc/testsuite/gm2/extensions/run/pass/callingc11.mod
@@ -5,13 +5,13 @@ FROM SYSTEM IMPORT ADR ;
 FROM strconst IMPORT WORLD ;
 
 BEGIN
-   IF funcptr (1, "hello", 5) = 1
+   IF funcptr (INTEGER (1), "hello", INTEGER (5)) = INTEGER (1)
    THEN
    END ;
-   IF funcptr (1, "hello" + " ", 6) = 1
+   IF funcptr (INTEGER (1), "hello" + " ", INTEGER (6)) = INTEGER (1)
    THEN
    END ;
-   IF funcptr (1, "hello" + " " + WORLD, 11) = 1
+   IF funcptr (INTEGER (1), "hello" + " " + WORLD, INTEGER (11)) = INTEGER (1)
    THEN
    END
 END callingc11.
diff --git a/gcc/testsuite/gm2/extensions/run/pass/vararg2.mod 
b/gcc/testsuite/gm2/extensions/run/pass/vararg2.mod
index e26ed096fb84..05f7074a459d 100644
--- a/gcc/testsuite/gm2/extensions/run/pass/vararg2.mod
+++ b/gcc/testsuite/gm2/extensions/run/pass/vararg2.mod
@@ -21,13 +21,13 @@ FROM cvararg IMPORT funcptr ;
 FROM SYSTEM IMPORT ADR ;
 
 BEGIN
-   IF funcptr(1, ADR("hello world"), 11)=1
+   IF funcptr(INTEGER (1), ADR("hello world"), INTEGER (11))=INTEGER (1)
    THEN
    END ;
-   IF funcptr(1, ADR("hello"), 5)=1
+   IF funcptr(INTEGER (1), ADR("hello"), INTEGER (5))=INTEGER (1)
    THEN
    END ;
-   IF funcptr(1, ADR("/etc/passwd"), 11)=1
+   IF funcptr(INTEGER (1), ADR("/etc/passwd"), INTEGER (11))=INTEGER (1)
    THEN
    END
 END vararg2.
diff --git a/gcc/testsuite/gm2/iso/run/pass/packed.mod 
b/gcc/testsuite/gm2/iso/run/pass/packed.mod
index 401a6998f71a..3dad71e60a13 100644
--- a/gcc/testsuite/gm2/iso/run/pass/packed.mod
+++ b/gcc/testsuite/gm2/iso/run/pass/packed.mod
@@ -38,7 +38,9 @@ PROCEDURE test ;
 VAR
    v: CARDINAL ;
 BEGIN
+   printf ("testing to see BITSET{0} = CARDINAL (1)...");
    Assert(CAST(CARDINAL, BITSET{0}) = VAL(CARDINAL, 1), __FILE__, __LINE__) ;
+   printf ("yes\n");
    v := MAX(CARDINAL)-1 ;
    WHILE v>0 DO
       Assert(CAST(CARDINAL, SHIFT(CAST(BITSET, v), -1)) = v DIV 2, __FILE__, 
__LINE__) ;

Reply via email to