Use set directive for StartMinusEndExpr.
This is a fix for llvm-gcc-i386-darwin9 buildbot failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120742 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp
index 02b6662..30a3105 100644
--- a/lib/MC/MCAsmStreamer.cpp
+++ b/lib/MC/MCAsmStreamer.cpp
@@ -147,7 +147,8 @@
virtual void EmitBytes(StringRef Data, unsigned AddrSpace);
- virtual void EmitValue(const MCExpr *Value, unsigned Size,unsigned AddrSpace);
+ virtual void EmitValue(const MCExpr *Value, unsigned Size,unsigned AddrSpace,
+ bool UseSet = false);
virtual void EmitULEB128Value(const MCExpr *Value, unsigned AddrSpace = 0);
@@ -495,7 +496,7 @@
}
void MCAsmStreamer::EmitValue(const MCExpr *Value, unsigned Size,
- unsigned AddrSpace) {
+ unsigned AddrSpace, bool UseSet) {
assert(CurSection && "Cannot emit contents before setting section!");
const char *Directive = 0;
switch (Size) {
@@ -521,6 +522,14 @@
}
assert(Directive && "Invalid size for machine code value!");
+ if (UseSet && MAI.hasSetDirective()) {
+ MCSymbol *SetLabel = getContext().CreateTempSymbol();
+ EmitAssignment(SetLabel, Value);
+ OS << Directive << *SetLabel;
+ EmitEOL();
+ return;
+ }
+
OS << Directive << *Value;
EmitEOL();
}