summaryrefslogtreecommitdiff
path: root/tools/lto/LTOModule.cpp
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2013-01-14 19:04:57 +0000
committerEli Bendersky <eliben@google.com>2013-01-14 19:04:57 +0000
commit030f63a397edc20f8f661bac62f7b90cb5cf57bc (patch)
treec102045afd6db912521b48e1c84a111551d990ef /tools/lto/LTOModule.cpp
parent9bac6b29b832419f8b76bb2c27af74bb57a8d99a (diff)
downloadllvm-030f63a397edc20f8f661bac62f7b90cb5cf57bc.tar.gz
llvm-030f63a397edc20f8f661bac62f7b90cb5cf57bc.tar.bz2
llvm-030f63a397edc20f8f661bac62f7b90cb5cf57bc.tar.xz
Expose an InitToTextSection through MCStreamer.
The aim of this patch is to fix the following piece of code in the platform-independent AsmParser: void AsmParser::CheckForValidSection() { if (!ParsingInlineAsm && !getStreamer().getCurrentSection()) { TokError("expected section directive before assembly directive"); Out.SwitchSection(Ctx.getMachOSection( "__TEXT", "__text", MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS, 0, SectionKind::getText())); } } This was added for the "-n" option of llvm-mc. The proposed fix adds another virtual method to MCStreamer, called InitToTextSection. Conceptually, it's similar to the existing InitSections which initializes all common sections and switches to text. The new method is implemented by each platform streamer in a way that it sees fit. So AsmParser can now do this: void AsmParser::CheckForValidSection() { if (!ParsingInlineAsm && !getStreamer().getCurrentSection()) { TokError("expected section directive before assembly directive"); Out.InitToTextSection(); } } Which is much more reasonable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172450 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/lto/LTOModule.cpp')
-rw-r--r--tools/lto/LTOModule.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp
index 23a8fb4a78..d90a403cf9 100644
--- a/tools/lto/LTOModule.cpp
+++ b/tools/lto/LTOModule.cpp
@@ -771,6 +771,7 @@ namespace {
// Noop calls.
virtual void ChangeSection(const MCSection *Section) {}
+ virtual void InitToTextSection() {}
virtual void InitSections() {}
virtual void EmitAssemblerFlag(MCAssemblerFlag Flag) {}
virtual void EmitThumbFunc(MCSymbol *Func) {}