@@ -173,6 +173,7 @@ expect_run t_f32.mod 42
expect_run t_f32proc.mod 42
expect_run t_f32field.mod 42
expect_run t_f32conv.mod 42
+expect_run t_f32const.mod 42
expect_run t_extern_alias.mod 42
expect_run t_with.mod 114
expect_run t_set.mod 131
@@ -4014,9 +4014,16 @@ PRODUCTIONS
astRes := astNode;
t := ct2;
QbeGen.CopyOp(q2, q);
- IF isConvF AND QbeGen.IsImm(convQ)
- AND OrdClass(convT) AND OrdClass(ct2) THEN
- QbeGen.CopyOp(convQ, q)
+ IF isConvF AND QbeGen.IsImm(convQ) THEN
+ IF OrdClass(convT) AND OrdClass(ct2) THEN
+ QbeGen.CopyOp(convQ, q)
+ ELSIF SymTab.IsRealType(ct2) THEN
+ IF SymTab.IsIntFamily(convT) THEN
+ QbeGen.NormReal(convQ, q)
+ ELSE
+ END
END;
sfx := FALSE; .)
{ ResultComp<t, q, sfx, astRes, mname, methCls, isM>
@@ -0,0 +1,17 @@
+MODULE TF32Const;
+(* Compile-time SHORTREAL conversion in CONST declarations. *)
+CONST
+ sr = SHORTREAL(1.5);
+ si = SHORTREAL(1);
+VAR
+ ExitCode : INTEGER;
+ x, y : SHORTREAL;
+BEGIN
+ x := sr;
+ y := si;
+ IF (x = 1.5) AND (y = 1.0) THEN
+ ExitCode := 42
+ ExitCode := 1
+END TF32Const.