diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-04-20 15:54:13 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-04-20 15:54:13 +0000 |
commit | 562670383715f313fb6e6192e1620622e739de4b (patch) | |
tree | 8291140039eae438701fb15de6376c55ac100e1c /llvm/lib | |
parent | 143d15bc29bdd913c9bfa92123738bcd141013b9 (diff) | |
download | bcm5719-llvm-562670383715f313fb6e6192e1620622e739de4b.tar.gz bcm5719-llvm-562670383715f313fb6e6192e1620622e739de4b.zip |
[Hexagon] Fix handling of lcomm directive
Patch by Colin LeMahieu.
llvm-svn: 266882
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.cpp index eaa3550d07f..67dcb8fea73 100644 --- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.cpp +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.cpp @@ -107,15 +107,20 @@ void HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(MCSymbol *Symbol, ((AccessSize == 0) || (Size == 0) || (Size > GPSize)) ? ".bss" : sbss[(Log2_64(AccessSize))]; - - MCSection *CrntSection = getCurrentSection().first; - MCSection *Section = getAssembler().getContext().getELFSection( + MCSection &Section = *getAssembler().getContext().getELFSection( SectionName, ELF::SHT_NOBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC); - SwitchSection(Section); - AssignFragment(Symbol, getCurrentFragment()); + MCSectionSubPair P = getCurrentSection(); + SwitchSection(&Section); + + EmitValueToAlignment(ByteAlignment, 0, 1, 0); + EmitLabel(Symbol); + EmitZeros(Size); + + // Update the maximum alignment of the section if necessary. + if (ByteAlignment > Section.getAlignment()) + Section.setAlignment(ByteAlignment); - MCELFStreamer::EmitCommonSymbol(Symbol, Size, ByteAlignment); - SwitchSection(CrntSection); + SwitchSection(P.first, P.second); } else { if (ELFSymbol->declareCommon(Size, ByteAlignment)) report_fatal_error("Symbol: " + Symbol->getName() + |