aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaius Mulley <gaiusmod2@gmail.com>2024-05-07 19:24:08 +0100
committerGaius Mulley <gaiusmod2@gmail.com>2024-05-07 19:24:08 +0100
commit76e591200f54226290ddb49b8ac6231a694bf882 (patch)
tree7b1b22bd8c37d6b86c345c614c9be753276cb862
parent1139f38e798181572121657e5b267a9698edb62f (diff)
downloadgcc-76e591200f54226290ddb49b8ac6231a694bf882.zip
gcc-76e591200f54226290ddb49b8ac6231a694bf882.tar.gz
gcc-76e591200f54226290ddb49b8ac6231a694bf882.tar.bz2
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 <gaiusmod2@gmail.com>
-rw-r--r--gcc/testsuite/gm2/extensions/run/pass/callingc10.mod6
-rw-r--r--gcc/testsuite/gm2/extensions/run/pass/callingc11.mod6
-rw-r--r--gcc/testsuite/gm2/extensions/run/pass/vararg2.mod6
-rw-r--r--gcc/testsuite/gm2/iso/run/pass/packed.mod2
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 3a2d3e2..0c26fed 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 9b8cb82..d71026e 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 e26ed09..05f7074 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 401a699..3dad71e 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__) ;