Browse Source

+ testcse3.pp

Jonas Maebe 25 years ago
parent
commit
b856a450bd
2 changed files with 41 additions and 0 deletions
  1. 1 0
      tests/testopt/readme.txt
  2. 40 0
      tests/testopt/testcse3.pp

+ 1 - 0
tests/testopt/readme.txt

@@ -6,3 +6,4 @@ Register variables:
 Common subexpression elimination (assembler)
   Multidimensional array index operation. testcse1.pp
   CSE and range checking ................ testcse2.pp
+  web bug 972............................ testcse3.pp

+ 40 - 0
tests/testopt/testcse3.pp

@@ -0,0 +1,40 @@
+{ $OPT=-O2}
+function forms(s: string; len: word): string;
+begin
+  str(len,forms);
+  forms := s + ', ' + forms;
+end;
+
+procedure wrt2(s: string);
+begin
+  if s <> 'e 123, 4' then
+    begin
+      writeln('bug!');
+      halt(1);
+    end;
+end;
+
+type
+  pstring = ^string;
+  ta = array[0..254] of pstring;
+  tb = array[0..254] of byte;
+
+procedure t(var sel: ta; var selhigh: tb);
+var
+  ml, i: byte;
+begin
+  i := 5;
+  ml := 8;
+  new(sel[i]);
+  sel[i]^ := 'testje 123';
+  selhigh[i] := 5;
+  wrt2(forms(copy(sel[i]^,selhigh[i]+1,255),ml-selhigh[i]+1));
+end;
+
+var
+  a: ta;
+  b: tb;
+
+begin
+  t(a,b);
+end.