OSDN Git Service

Check that records with a known constant size are not
authorDuncan Sands <baldrick@free.fr>
Wed, 25 Feb 2009 18:10:49 +0000 (18:10 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 25 Feb 2009 18:10:49 +0000 (18:10 +0000)
copied field by LLVM field if the record has a variable
sized field in it.  The problem is that the LLVM field
will not completely cover the variable sized gcc field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65463 91177308-0d34-0410-b5e6-96231b3b80d8

test/FrontendAda/Support/element_copy.ads [new file with mode: 0644]
test/FrontendAda/element_copy.adb [new file with mode: 0644]

diff --git a/test/FrontendAda/Support/element_copy.ads b/test/FrontendAda/Support/element_copy.ads
new file mode 100644 (file)
index 0000000..52c6e49
--- /dev/null
@@ -0,0 +1,8 @@
+package Element_Copy is
+   type SmallInt is range 1 .. 4;
+   type SmallStr is array (SmallInt range <>) of Character;
+   type VariableSizedField (D : SmallInt := 2) is record
+      S : SmallStr (1 .. D) := "Hi";
+   end record;
+   function F return VariableSizedField;
+end;
diff --git a/test/FrontendAda/element_copy.adb b/test/FrontendAda/element_copy.adb
new file mode 100644 (file)
index 0000000..29274fa
--- /dev/null
@@ -0,0 +1,8 @@
+-- RUN: %llvmgcc -S -O2 %s -I%p/Support -o - | grep 105 | count 2
+package body Element_Copy is
+   function F return VariableSizedField is
+      X : VariableSizedField;
+   begin
+      return X;
+   end;
+end;