From c642e53b8c58ea80b4329a336d50856bfddba4e2 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Wed, 25 Feb 2009 18:10:49 +0000 Subject: Check that records with a known constant size are not 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. llvm-svn: 65463 --- llvm/test/FrontendAda/Support/element_copy.ads | 8 ++++++++ llvm/test/FrontendAda/element_copy.adb | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 llvm/test/FrontendAda/Support/element_copy.ads create mode 100644 llvm/test/FrontendAda/element_copy.adb (limited to 'llvm') diff --git a/llvm/test/FrontendAda/Support/element_copy.ads b/llvm/test/FrontendAda/Support/element_copy.ads new file mode 100644 index 00000000000..52c6e49275e --- /dev/null +++ b/llvm/test/FrontendAda/Support/element_copy.ads @@ -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/llvm/test/FrontendAda/element_copy.adb b/llvm/test/FrontendAda/element_copy.adb new file mode 100644 index 00000000000..29274fa744a --- /dev/null +++ b/llvm/test/FrontendAda/element_copy.adb @@ -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; -- cgit v1.2.3