diff options
author | Britney Fransen <brfransen@gmail.com> | 2019-02-21 15:56:44 (GMT) |
---|---|---|
committer | Britney Fransen <brfransen@gmail.com> | 2019-02-21 15:56:44 (GMT) |
commit | 998c5fe43ec03366f26f1430c6453d623f314a51 (patch) | |
tree | 4bfc6f49df13ad7fe21667051430c537864a718c /abs/extra/llvm/rusty-discriminator-thingy.patch | |
parent | 65fb0683c063752f4b263203a737f6c3ae0a782e (diff) | |
download | linhes_pkgbuild-998c5fe43ec03366f26f1430c6453d623f314a51.zip linhes_pkgbuild-998c5fe43ec03366f26f1430c6453d623f314a51.tar.gz linhes_pkgbuild-998c5fe43ec03366f26f1430c6453d623f314a51.tar.bz2 |
llvm: update to 7.0.1
Diffstat (limited to 'abs/extra/llvm/rusty-discriminator-thingy.patch')
-rw-r--r-- | abs/extra/llvm/rusty-discriminator-thingy.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/abs/extra/llvm/rusty-discriminator-thingy.patch b/abs/extra/llvm/rusty-discriminator-thingy.patch new file mode 100644 index 0000000..fb7ef03 --- /dev/null +++ b/abs/extra/llvm/rusty-discriminator-thingy.patch @@ -0,0 +1,57 @@ +From da1fb72bb305d6bc1f3899d541414146934bf80f Mon Sep 17 00:00:00 2001 +From: Jonas Devlieghere <jonas@devlieghere.com> +Date: Fri, 21 Sep 2018 12:03:14 +0000 +Subject: [PATCH] Ensure that variant part discriminator is read by + MetadataLoader + +https://reviews.llvm.org/D42082 introduced variant parts to debug info +in LLVM. Subsequent work on the Rust compiler has found a bug in that +patch; namely, there is a path in MetadataLoader that fails to restore +the discriminator. + +This patch fixes the bug. + +Patch by: Tom Tromey + +Differential revision: https://reviews.llvm.org/D52340 + +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342725 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + lib/Bitcode/Reader/MetadataLoader.cpp | 2 +- + test/Assembler/debug-variant-discriminator.ll | 14 ++++++++++++++ + 2 files changed, 15 insertions(+), 1 deletion(-) + create mode 100644 test/Assembler/debug-variant-discriminator.ll + +diff --git a/lib/Bitcode/Reader/MetadataLoader.cpp b/lib/Bitcode/Reader/MetadataLoader.cpp +index 3fe7d2205631..4781cfe3dea6 100644 +--- a/lib/Bitcode/Reader/MetadataLoader.cpp ++++ b/lib/Bitcode/Reader/MetadataLoader.cpp +@@ -1313,7 +1313,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( + (Context, Tag, Name, File, Line, Scope, BaseType, + SizeInBits, AlignInBits, OffsetInBits, Flags, + Elements, RuntimeLang, VTableHolder, TemplateParams, +- Identifier)); ++ Identifier, Discriminator)); + if (!IsNotUsedInTypeRef && Identifier) + MetadataList.addTypeRef(*Identifier, *cast<DICompositeType>(CT)); + +diff --git a/test/Assembler/debug-variant-discriminator.ll b/test/Assembler/debug-variant-discriminator.ll +new file mode 100644 +index 000000000000..5be001cad6be +--- /dev/null ++++ b/test/Assembler/debug-variant-discriminator.ll +@@ -0,0 +1,14 @@ ++; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s ++; RUN: verify-uselistorder %s ++ ++; CHECK: !named = !{!0, !1, !2} ++!named = !{!0, !1, !2} ++ ++; CHECK: !0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer") ++; CHECK-NEXT: !1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2) ++; CHECK-NEXT: !2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial) ++; CHECK-NEXT: !3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) ++!0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer") ++!1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2) ++!2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial) ++!3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned) |