Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Jan 2016 18:04:22 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r294179 - projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter
Message-ID:  <201601161804.u0GI4M3B056069@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat Jan 16 18:04:22 2016
New Revision: 294179
URL: https://svnweb.freebsd.org/changeset/base/294179

Log:
  Pull in r257977 from upstream llvm trunk, by Keno Fischer:
  
    [DwarfDebug] Move MergeValues to .cpp, NFC
  
  Pull in r257979 from upstream llvm trunk, by Keno Fischer:
  
    [DwarfDebug] Don't merge DebugLocEntries if their pieces overlap
  
    Summary:
    Later in DWARF emission we check that DebugLocEntries have
    non-overlapping pieces, so we should create any such entries
    by merging here.
  
    Fixes PR26163.
  
    Reviewers: aprantl
    Differential Revision: http://reviews.llvm.org/D16249
  
  Again, these will be merged to the official release_38 branch soon, but
  we need them ASAP.

Modified:
  projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
  projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp

Modified: projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h	Sat Jan 16 18:03:12 2016	(r294178)
+++ projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h	Sat Jan 16 18:04:22 2016	(r294179)
@@ -93,18 +93,7 @@ public:
   /// variable, merge them by appending Next's values to the current
   /// list of values.
   /// Return true if the merge was successful.
-  bool MergeValues(const DebugLocEntry &Next) {
-    if (Begin == Next.Begin) {
-      auto *Expr = cast_or_null<DIExpression>(Values[0].Expression);
-      auto *NextExpr = cast_or_null<DIExpression>(Next.Values[0].Expression);
-      if (Expr->isBitPiece() && NextExpr->isBitPiece()) {
-        addValues(Next.Values);
-        End = Next.End;
-        return true;
-      }
-    }
-    return false;
-  }
+  bool MergeValues(const DebugLocEntry &Next);
 
   /// \brief Attempt to merge this DebugLocEntry with Next and return
   /// true if the merge was successful. Entries can be merged if they

Modified: projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp	Sat Jan 16 18:03:12 2016	(r294178)
+++ projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp	Sat Jan 16 18:04:22 2016	(r294179)
@@ -805,6 +805,24 @@ static bool piecesOverlap(const DIExpres
   return (l1 < r2) && (l2 < r1);
 }
 
+/// \brief If this and Next are describing different pieces of the same
+/// variable, merge them by appending Next's values to the current
+/// list of values.
+/// Return true if the merge was successful.
+bool DebugLocEntry::MergeValues(const DebugLocEntry &Next) {
+  if (Begin == Next.Begin) {
+    auto *Expr = cast_or_null<DIExpression>(Values[0].Expression);
+    auto *NextExpr = cast_or_null<DIExpression>(Next.Values[0].Expression);
+    if (Expr->isBitPiece() && NextExpr->isBitPiece() &&
+        !piecesOverlap(Expr, NextExpr)) {
+      addValues(Next.Values);
+      End = Next.End;
+      return true;
+    }
+  }
+  return false;
+}
+
 /// Build the location list for all DBG_VALUEs in the function that
 /// describe the same variable.  If the ranges of several independent
 /// pieces of the same variable overlap partially, split them up and



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601161804.u0GI4M3B056069>