https://gcc.gnu.org/g:07dab3f6b56c711dcd737d856cf01a597a2e1626
commit r14-10179-g07dab3f6b56c711dcd737d856cf01a597a2e1626 Author: Gaius Mulley <gaiusm...@gmail.com> Date: Tue May 7 19:51:08 2024 +0100 [PR modula2/113768][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/113768 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__) ;