diff options
author | Devang Patel <dpatel@apple.com> | 2010-09-02 16:43:44 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2010-09-02 16:43:44 +0000 |
commit | da3ef85460d62f99192cee75b8092d016d6b619c (patch) | |
tree | 07857e8db780b2036103cdbe09c25322165a8ecd /llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
parent | 5d43a35e6d8592aa27822010d6cd44e00960d24d (diff) | |
download | bcm5719-llvm-da3ef85460d62f99192cee75b8092d016d6b619c.tar.gz bcm5719-llvm-da3ef85460d62f99192cee75b8092d016d6b619c.zip |
Fix .debug_range for linux. Patch by Krister Wombell.
llvm-svn: 112830
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 25713419290..9078f282025 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1218,6 +1218,29 @@ void AsmPrinter::EmitLabelOffsetDifference(const MCSymbol *Hi, uint64_t Offset, OutStreamer.EmitSymbolValue(SetLabel, 4, 0/*AddrSpace*/); } } + +/// EmitLabelPlusOffset - Emit something like ".long Label+Offset" +/// where the size in bytes of the directive is specified by Size and Label +/// specifies the label. This implicitly uses .set if it is available. +void AsmPrinter::EmitLabelPlusOffset(const MCSymbol *Label, uint64_t Offset, + unsigned Size) + const { + + // Emit Label+Offset + const MCExpr *Plus = + MCBinaryExpr::CreateAdd(MCSymbolRefExpr::Create(Label, OutContext), + MCConstantExpr::Create(Offset, OutContext), + OutContext); + + if (!MAI->hasSetDirective()) + OutStreamer.EmitValue(Plus, 4, 0/*AddrSpace*/); + else { + // Otherwise, emit with .set (aka assignment). + MCSymbol *SetLabel = GetTempSymbol("set", SetCounter++); + OutStreamer.EmitAssignment(SetLabel, Plus); + OutStreamer.EmitSymbolValue(SetLabel, 4, 0/*AddrSpace*/); + } +} //===----------------------------------------------------------------------===// |