]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR modula2/114133 bugfix constants must be cast prior to vararg call
authorGaius Mulley <gaiusmod2@gmail.com>
Tue, 7 May 2024 18:24:08 +0000 (19:24 +0100)
committerGaius Mulley <gaiusmod2@gmail.com>
Tue, 7 May 2024 18:24:08 +0000 (19:24 +0100)
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 <gaiusmod2@gmail.com>
gcc/testsuite/gm2/extensions/run/pass/callingc10.mod
gcc/testsuite/gm2/extensions/run/pass/callingc11.mod
gcc/testsuite/gm2/extensions/run/pass/vararg2.mod
gcc/testsuite/gm2/iso/run/pass/packed.mod

index 3a2d3e210dcc1e201be93a14d2647b88aa909cce..0c26fedf84533f005b948d676699187e9bb944bf 100644 (file)
@@ -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.
index 9b8cb82d645fcfbe34e1fbbac2ac3655edd2b815..d71026ee35df676c8ccc6eddb7d8ae4385655c1a 100644 (file)
@@ -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.
index e26ed096fb8462aa4bc8675c9f37c1dc4f869f30..05f7074a459da700fbcd3630e0974fe7ab881d23 100644 (file)
@@ -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.
index 401a6998f71abf6e9a3d5852bf986c9dcfdb6912..3dad71e60a1337171f146f84f3e26bb13a5d679a 100644 (file)
@@ -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__) ;