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>