florian 3 years ago
parent
commit
a9db747eb9
1 changed files with 34 additions and 0 deletions
  1. 34 0
      tests/webtbs/tw39786.pp

+ 34 - 0
tests/webtbs/tw39786.pp

@@ -0,0 +1,34 @@
+{ %OPT=-O4 -Sg }
+{$mode objfpc} {$h+}
+label A0, A1, B0, B1, C0, C1;
+
+var
+	x, y: single;
+	dontDrop: string;
+	size: ptrint;
+
+begin
+	x := random;
+A0:
+	y := x * 1 * 2 * 3 * 4 * 5 * 6; // folds
+A1:
+	writestr(dontDrop, y);
+	size := CodePointer(@A1) - CodePointer(@A0);
+	writeln('x * 1 * 2 * 3 * 4 * 5 * 6: ', CodePointer(@A1) - CodePointer(@A0), ' b');
+
+B0:
+	y := x * 1 / 2 * 3 / 4 * 5 / 6; // doesn’t fold
+B1:
+	writestr(dontDrop, y);
+	if CodePointer(@B1) - CodePointer(@B0) > size then
+	  halt(1);
+	writeln('x * 1 / 2 * 3 / 4 * 5 / 6: ', CodePointer(@B1) - CodePointer(@B0), ' b');
+
+C0:
+	y := x / 1 / 2 / 3 / 4 / 5 / 6; // doesn’t fold
+C1:
+	writestr(dontDrop, y);
+	if CodePointer(@C1) - CodePointer(@C0) > size then
+	  halt(1);
+	writeln('x / 1 / 2 / 3 / 4 / 5 / 6: ', CodePointer(@C1) - CodePointer(@C0), ' b');
+end.