[llvm] 4e724c2 - Revert "[DWARFv5] Verify all-or-nothing constraint on DIFile source"

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 3 09:24:50 PST 2023


Please include some details on why a patch is reverted in the revert commit
message.

On Thu, Nov 30, 2023 at 3:09 PM Adrian Prantl via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

>
> Author: Adrian Prantl
> Date: 2023-11-30T15:09:24-08:00
> New Revision: 4e724c2a214cc62fd024237f0bdf903ed8fbf45b
>
> URL:
> https://github.com/llvm/llvm-project/commit/4e724c2a214cc62fd024237f0bdf903ed8fbf45b
> DIFF:
> https://github.com/llvm/llvm-project/commit/4e724c2a214cc62fd024237f0bdf903ed8fbf45b.diff
>
> LOG: Revert "[DWARFv5] Verify all-or-nothing constraint on DIFile source"
>
> This reverts commit 4ed5195712fd1f3f43e23678d8f666c47d1aa7d5.
>
> Added:
>
>
> Modified:
>     llvm/lib/IR/Verifier.cpp
>
> Removed:
>     llvm/test/Assembler/debug-info-source-invalid.ll
>     llvm/test/Assembler/debug-info-source.ll
>
>
>
> ################################################################################
> diff  --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
> index 5560c037aa3ee6b..5f466581ea98095 100644
> --- a/llvm/lib/IR/Verifier.cpp
> +++ b/llvm/lib/IR/Verifier.cpp
> @@ -329,9 +329,6 @@ class Verifier : public InstVisitor<Verifier>,
> VerifierSupport {
>    /// The current source language.
>    dwarf::SourceLanguage CurrentSourceLang = dwarf::DW_LANG_lo_user;
>
> -  /// Whether source was present on the first DIFile encountered in each
> CU.
> -  DenseMap<const DICompileUnit *, bool> HasSourceDebugInfo;
> -
>    /// Stores the count of how many objects were passed to
> llvm.localescape for a
>    /// given function and the largest index passed to llvm.localrecover.
>    DenseMap<Function *, std::pair<unsigned, unsigned>> FrameEscapeInfo;
> @@ -620,9 +617,6 @@ class Verifier : public InstVisitor<Verifier>,
> VerifierSupport {
>    void verifyAttachedCallBundle(const CallBase &Call,
>                                  const OperandBundleUse &BU);
>
> -  /// Verify all-or-nothing property of DIFile source attribute within a
> CU.
> -  void verifySourceDebugInfo(const DICompileUnit &U, const DIFile &F);
> -
>    /// Verify the llvm.experimental.noalias.scope.decl declarations
>    void verifyNoAliasScopeDecl();
>  };
> @@ -1352,8 +1346,6 @@ void Verifier::visitDICompileUnit(const
> DICompileUnit &N) {
>
>    CurrentSourceLang = (dwarf::SourceLanguage)N.getSourceLanguage();
>
> -  verifySourceDebugInfo(N, *N.getFile());
> -
>    CheckDI((N.getEmissionKind() <= DICompileUnit::LastEmissionKind),
>            "invalid emission kind", &N);
>
> @@ -1442,8 +1434,6 @@ void Verifier::visitDISubprogram(const DISubprogram
> &N) {
>                "definition subprograms cannot be nested within
> DICompositeType "
>                "when enabling ODR",
>                &N);
> -    if (N.getFile())
> -      verifySourceDebugInfo(*N.getUnit(), *N.getFile());
>    } else {
>      // Subprogram declarations (part of the type hierarchy).
>      CheckDI(!Unit, "subprogram declarations must not have a compile
> unit", &N);
> @@ -6590,14 +6580,6 @@ void Verifier::verifyAttachedCallBundle(const
> CallBase &Call,
>    }
>  }
>
> -void Verifier::verifySourceDebugInfo(const DICompileUnit &U, const DIFile
> &F) {
> -  bool HasSource = F.getSource().has_value();
> -  if (!HasSourceDebugInfo.count(&U))
> -    HasSourceDebugInfo[&U] = HasSource;
> -  CheckDI(HasSource == HasSourceDebugInfo[&U],
> -          "inconsistent use of embedded source");
> -}
> -
>  void Verifier::verifyNoAliasScopeDecl() {
>    if (NoAliasScopeDecls.empty())
>      return;
>
> diff  --git a/llvm/test/Assembler/debug-info-source-invalid.ll
> b/llvm/test/Assembler/debug-info-source-invalid.ll
> deleted file mode 100644
> index d746e9e25fc3d12..000000000000000
> --- a/llvm/test/Assembler/debug-info-source-invalid.ll
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -; RUN: llvm-as < %s 2>&1 >/dev/null | FileCheck %s
> -
> -; Ensure we reject debug info where the DIFiles of a DICompileUnit mix
> source
> -; and no-source.
> -
> -define dso_local void @foo() !dbg !5 {
> -  ret void
> -}
> -
> -define dso_local void @bar() !dbg !6 {
> -  ret void
> -}
> -
> -!llvm.dbg.cu = !{!4}
> -!llvm.module.flags = !{!0, !1}
> -
> -!0 = !{i32 2, !"Dwarf Version", i32 5}
> -!1 = !{i32 2, !"Debug Info Version", i32 3}
> -
> -!2 = !DIFile(filename: "foo.c", directory: "dir", source: "void foo() {
> }\0A")
> -; CHECK: inconsistent use of embedded source
> -; CHECK: warning: ignoring invalid debug info
> -!3 = !DIFile(filename: "bar.h", directory: "dir")
> -
> -!4 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2)
> -!5 = distinct !DISubprogram(name: "foo", file: !2, unit: !4)
> -!6 = distinct !DISubprogram(name: "bar", file: !3, unit: !4)
>
> diff  --git a/llvm/test/Assembler/debug-info-source.ll
> b/llvm/test/Assembler/debug-info-source.ll
> deleted file mode 100644
> index 381603ef35c3839..000000000000000
> --- a/llvm/test/Assembler/debug-info-source.ll
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
> -; RUN: verify-uselistorder %s
> -
> -; Ensure we accept debug info where DIFiles within a DICompileUnit either
> all
> -; have source, or none have source.
> -
> -define dso_local void @foo() !dbg !6 {
> -  ret void
> -}
> -
> -define dso_local void @bar() !dbg !7 {
> -  ret void
> -}
> -
> -define dso_local void @baz() !dbg !9 {
> -  ret void
> -}
> -
> -define dso_local void @qux() !dbg !11 {
> -  ret void
> -}
> -
> -!llvm.dbg.cu = !{!0, !2}
> -!llvm.module.flags = !{!4, !5}
> -
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1)
> -; CHECK: !1 = !DIFile(filename: "foo.c", directory: "dir", source: "void
> foo() { }\0A")
> -!1 = !DIFile(filename: "foo.c", directory: "dir", source: "void foo() {
> }\0A")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3)
> -; CHECK: !3 = !DIFile(filename: "qux.h", directory: "dir")
> -!3 = !DIFile(filename: "qux.h", directory: "dir")
> -!4 = !{i32 2, !"Dwarf Version", i32 5}
> -!5 = !{i32 2, !"Debug Info Version", i32 3}
> -!6 = distinct !DISubprogram(name: "foo", file: !1, unit: !0)
> -!7 = distinct !DISubprogram(name: "bar", file: !8, unit: !0)
> -; CHECK: !8 = !DIFile(filename: "bar.h", directory: "dir", source: "void
> bar() { }\0A")
> -!8 = !DIFile(filename: "bar.h", directory: "dir", source: "void bar() {
> }\0A")
> -!9 = distinct !DISubprogram(name: "baz", file: !10, unit: !2)
> -; CHECK: !10 = !DIFile(filename: "baz.c", directory: "dir")
> -!10 = !DIFile(filename: "baz.c", directory: "dir")
> -!11 = distinct !DISubprogram(name: "qux", file: !3, unit: !2)
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20231203/e56fe8b4/attachment.html>


More information about the llvm-commits mailing list