From 411c28540454c536519f04a2fde461e91ad1f661 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Wed, 25 Feb 2009 18:10:49 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65463 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/FrontendAda/Support/element_copy.ads | 8 ++++++++ test/FrontendAda/element_copy.adb | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 test/FrontendAda/Support/element_copy.ads create mode 100644 test/FrontendAda/element_copy.adb diff --git a/test/FrontendAda/Support/element_copy.ads b/test/FrontendAda/Support/element_copy.ads new file mode 100644 index 00000000000..52c6e49275e --- /dev/null +++ b/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/test/FrontendAda/element_copy.adb b/test/FrontendAda/element_copy.adb new file mode 100644 index 00000000000..29274fa744a --- /dev/null +++ b/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; -- 2.11.0