[COMMITTED] algol68: consolidate ref in a68_union_value
Jose E. Marchesi
jemarch@gnu.org
Tue Apr 22 22:26:51 GMT 2025
---
gcc/algol68/a68-low-unions.cc | 2 +-
gcc/testsuite/algol68/compile/uniting-1.a68 | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/algol68/compile/uniting-1.a68
diff --git a/gcc/algol68/a68-low-unions.cc b/gcc/algol68/a68-low-unions.cc
index 67ba85ba8ea..e80b774abec 100644
--- a/gcc/algol68/a68-low-unions.cc
+++ b/gcc/algol68/a68-low-unions.cc
@@ -213,7 +213,7 @@ a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode)
tree value = build_constructor_va (TREE_TYPE (value_field),
1,
alternative_field,
- exp);
+ a68_consolidate_ref (exp_mode, exp));
return build_constructor_va (type,
2,
overhead_field, overhead,
diff --git a/gcc/testsuite/algol68/compile/uniting-1.a68 b/gcc/testsuite/algol68/compile/uniting-1.a68
new file mode 100644
index 00000000000..e1fcd6fccff
--- /dev/null
+++ b/gcc/testsuite/algol68/compile/uniting-1.a68
@@ -0,0 +1,9 @@
+# { dg-options {-fstropping=supper} } #
+# PR SUPPER #
+begin mode JSON_Val = union (int,ref JSON_Obj),
+ JSON_Obj = struct (int je),
+
+ proc json_new_obj = JSON_Val:
+ (JSON_Obj o; o);
+ skip
+end
--
2.30.2
More information about the Algol68
mailing list