Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Jan 2018 16:41:38 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r328594 - in head/contrib/llvm: include/llvm/MC lib/MC
Message-ID:  <201801301641.w0UGfcG6073352@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Tue Jan 30 16:41:38 2018
New Revision: 328594
URL: https://svnweb.freebsd.org/changeset/base/328594

Log:
  Pull in r322108 from upstream llvm trunk (by Rafael EspĂ­ndola):
  
    Make one of the emitFill methods non virtual. NFC.
  
    This is just preparatory work to fix [LLVM] PR35858.

Modified:
  head/contrib/llvm/include/llvm/MC/MCObjectStreamer.h
  head/contrib/llvm/include/llvm/MC/MCStreamer.h
  head/contrib/llvm/lib/MC/MCAsmStreamer.cpp
  head/contrib/llvm/lib/MC/MCObjectStreamer.cpp
  head/contrib/llvm/lib/MC/MCStreamer.cpp

Modified: head/contrib/llvm/include/llvm/MC/MCObjectStreamer.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCObjectStreamer.h	Tue Jan 30 16:34:56 2018	(r328593)
+++ head/contrib/llvm/include/llvm/MC/MCObjectStreamer.h	Tue Jan 30 16:41:38 2018	(r328594)
@@ -161,7 +161,6 @@ class MCObjectStreamer : public MCStreamer { (public)
   bool EmitRelocDirective(const MCExpr &Offset, StringRef Name,
                           const MCExpr *Expr, SMLoc Loc) override;
   using MCStreamer::emitFill;
-  void emitFill(uint64_t NumBytes, uint8_t FillValue) override;
   void emitFill(const MCExpr &NumBytes, uint64_t FillValue,
                 SMLoc Loc = SMLoc()) override;
   void emitFill(const MCExpr &NumValues, int64_t Size, int64_t Expr,

Modified: head/contrib/llvm/include/llvm/MC/MCStreamer.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCStreamer.h	Tue Jan 30 16:34:56 2018	(r328593)
+++ head/contrib/llvm/include/llvm/MC/MCStreamer.h	Tue Jan 30 16:41:38 2018	(r328594)
@@ -662,7 +662,7 @@ class MCStreamer { (public)
 
   /// \brief Emit NumBytes bytes worth of the value specified by FillValue.
   /// This implements directives such as '.space'.
-  virtual void emitFill(uint64_t NumBytes, uint8_t FillValue);
+  void emitFill(uint64_t NumBytes, uint8_t FillValue);
 
   /// \brief Emit \p Size bytes worth of the value specified by \p FillValue.
   ///

Modified: head/contrib/llvm/lib/MC/MCAsmStreamer.cpp
==============================================================================
--- head/contrib/llvm/lib/MC/MCAsmStreamer.cpp	Tue Jan 30 16:34:56 2018	(r328593)
+++ head/contrib/llvm/lib/MC/MCAsmStreamer.cpp	Tue Jan 30 16:41:38 2018	(r328594)
@@ -192,9 +192,6 @@ class MCAsmStreamer final : public MCStreamer { (publi
 
   void EmitGPRel32Value(const MCExpr *Value) override;
 
-
-  void emitFill(uint64_t NumBytes, uint8_t FillValue) override;
-
   void emitFill(const MCExpr &NumBytes, uint64_t FillValue,
                 SMLoc Loc = SMLoc()) override;
 
@@ -965,17 +962,12 @@ void MCAsmStreamer::EmitGPRel32Value(const MCExpr *Val
   EmitEOL();
 }
 
-/// emitFill - Emit NumBytes bytes worth of the value specified by
-/// FillValue.  This implements directives such as '.space'.
-void MCAsmStreamer::emitFill(uint64_t NumBytes, uint8_t FillValue) {
-  if (NumBytes == 0) return;
-
-  const MCExpr *E = MCConstantExpr::create(NumBytes, getContext());
-  emitFill(*E, FillValue);
-}
-
 void MCAsmStreamer::emitFill(const MCExpr &NumBytes, uint64_t FillValue,
                              SMLoc Loc) {
+  int64_t IntNumBytes;
+  if (NumBytes.evaluateAsAbsolute(IntNumBytes) && IntNumBytes == 0)
+    return;
+
   if (const char *ZeroDirective = MAI->getZeroDirective()) {
     // FIXME: Emit location directives
     OS << ZeroDirective;

Modified: head/contrib/llvm/lib/MC/MCObjectStreamer.cpp
==============================================================================
--- head/contrib/llvm/lib/MC/MCObjectStreamer.cpp	Tue Jan 30 16:34:56 2018	(r328593)
+++ head/contrib/llvm/lib/MC/MCObjectStreamer.cpp	Tue Jan 30 16:41:38 2018	(r328594)
@@ -577,11 +577,6 @@ bool MCObjectStreamer::EmitRelocDirective(const MCExpr
   return false;
 }
 
-void MCObjectStreamer::emitFill(uint64_t NumBytes, uint8_t FillValue) {
-  assert(getCurrentSectionOnly() && "need a section");
-  insert(new MCFillFragment(FillValue, NumBytes));
-}
-
 void MCObjectStreamer::emitFill(const MCExpr &NumBytes, uint64_t FillValue,
                                 SMLoc Loc) {
   MCDataFragment *DF = getOrCreateDataFragment();
@@ -593,12 +588,13 @@ void MCObjectStreamer::emitFill(const MCExpr &NumBytes
     return;
   }
 
-  if (IntNumBytes <= 0) {
+  if (IntNumBytes < 0) {
     getContext().reportError(Loc, "invalid number of bytes");
     return;
   }
 
-  emitFill(IntNumBytes, FillValue);
+  assert(getCurrentSectionOnly() && "need a section");
+  insert(new MCFillFragment(FillValue, IntNumBytes));
 }
 
 void MCObjectStreamer::emitFill(const MCExpr &NumValues, int64_t Size,

Modified: head/contrib/llvm/lib/MC/MCStreamer.cpp
==============================================================================
--- head/contrib/llvm/lib/MC/MCStreamer.cpp	Tue Jan 30 16:34:56 2018	(r328593)
+++ head/contrib/llvm/lib/MC/MCStreamer.cpp	Tue Jan 30 16:41:38 2018	(r328594)
@@ -184,8 +184,7 @@ void MCStreamer::EmitGPRel32Value(const MCExpr *Value)
 /// Emit NumBytes bytes worth of the value specified by FillValue.
 /// This implements directives such as '.space'.
 void MCStreamer::emitFill(uint64_t NumBytes, uint8_t FillValue) {
-  for (uint64_t i = 0, e = NumBytes; i != e; ++i)
-    EmitIntValue(FillValue, 1);
+  emitFill(*MCConstantExpr::create(NumBytes, getContext()), FillValue);
 }
 
 void MCStreamer::emitFill(uint64_t NumValues, int64_t Size, int64_t Expr) {



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