Browse Source

+ test for gpc (= default fpc) and metrowerks pascal calling conventions
for constant records

Jonas Maebe 20 years ago
parent
commit
42631f520b
1 changed files with 93 additions and 0 deletions
  1. 93 0
      tests/test/cg/tcalcon1.pp

+ 93 - 0
tests/test/cg/tcalcon1.pp

@@ -0,0 +1,93 @@
+{ %cpu=powerpc }
+{ %target=darwin,macos}
+
+type
+  tr1 = record
+    b: byte;
+  end;
+
+  tr2 = record
+    l: longint;
+  end;
+
+  tr3 = record
+    i: int64;
+  end;
+
+  tr4 = record
+    s: string;
+  end;
+
+var
+  r1: tr1;
+  r2: tr2;
+  r3: tr3;
+  r4: tr4;
+
+procedure p1normal(const r: tr1);
+begin
+  if @r = @r1 then
+    halt(1);
+end;
+
+
+procedure p2normal(const r: tr2);
+begin
+  if @r = @r2 then
+    halt(1);
+end;
+
+
+procedure p3normal(const r: tr3);
+begin
+  if @r = @r3 then
+    halt(1);
+end;
+
+
+procedure p4normal(const r: tr4);
+begin
+  if @r <> @r4 then
+    halt(1);
+end;
+
+
+procedure p1mw(const r: tr1); mwpascal;
+begin
+  if @r <> @r1 then
+    halt(1);
+end;
+
+
+procedure p2mw(const r: tr2);mwpascal;
+begin
+  if @r <> @r2 then
+    halt(1);
+end;
+
+
+procedure p3mw(const r: tr3);mwpascal;
+begin
+  if @r <> @r3 then
+    halt(1);
+end;
+
+
+procedure p4mw(const r: tr4);mwpascal;
+begin
+  if @r <> @r4 then
+    halt(1);
+end;
+
+
+begin
+  p1normal(r1);
+  p2normal(r2);
+  p3normal(r3);
+  p4normal(r4);
+
+  p1mw(r1);
+  p2mw(r2);
+  p3mw(r3);
+  p4mw(r4);
+end.