diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp index 9f219925b0f..2c855d950fd 100644 --- a/tools/llvm-mc/AsmParser.cpp +++ b/tools/llvm-mc/AsmParser.cpp @@ -1287,10 +1287,15 @@ bool AsmParser::ParseDirectiveDarwinZerofill() { // If this is the end of the line all that was wanted was to create the // the section but with no symbol. if (Lexer.is(AsmToken::EndOfStatement)) { + // FIXME: CACHE THIS. + MCSection *S = 0; //Ctx.GetSection(Section); + if (S == 0) + S = MCSectionMachO::Create(Segment, Section, + MCSectionMachO::S_ZEROFILL, 0, + SectionKind(), Ctx); + // Create the zerofill section but no symbol - Out.EmitZerofill(getMachOSection(Segment, Section, - MCSectionMachO::S_ZEROFILL, 0, - SectionKind())); + Out.EmitZerofill(S); return false; } @@ -1343,13 +1348,16 @@ bool AsmParser::ParseDirectiveDarwinZerofill() { if (!Sym->isUndefined()) return Error(IDLoc, "invalid symbol redefinition"); - // Create the zerofill Symbol with Size and Pow2Alignment - // // FIXME: Arch specific. - Out.EmitZerofill(getMachOSection(Segment, Section, - MCSectionMachO::S_ZEROFILL, 0, - SectionKind()), - Sym, Size, Pow2Alignment); + // FIXME: CACHE. + MCSection *S = 0; //Ctx.GetSection(Section); + if (S == 0) + S = MCSectionMachO::Create(Segment, Section, + MCSectionMachO::S_ZEROFILL, 0, + SectionKind(), Ctx); + + // Create the zerofill Symbol with Size and Pow2Alignment + Out.EmitZerofill(S, Sym, Size, Pow2Alignment); return false; }