[PATCH] D57073: allow COFF .def directive in module assembly when using ThinLTO
Bob Haarman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 23 13:19:51 PST 2019
inglorion updated this revision to Diff 183165.
inglorion retitled this revision from "allow COFF .def directive in inline assembly when using ThinLTO" to "allow COFF .def directive in module assembly when using ThinLTO".
inglorion edited the summary of this revision.
inglorion added a comment.
replaced .c test with an .ll test
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57073/new/
https://reviews.llvm.org/D57073
Files:
llvm/lib/Object/RecordStreamer.h
llvm/test/MC/COFF/module-asm-coff.ll
Index: llvm/test/MC/COFF/module-asm-coff.ll
===================================================================
--- /dev/null
+++ llvm/test/MC/COFF/module-asm-coff.ll
@@ -0,0 +1,21 @@
+; Tests COFF-specific directives in module level assembly.
+
+; RUN: llc -filetype=obj %s -o %t.obj
+; RUN: llvm-readobj -t %t.obj | FileCheck %s
+; RUN: opt -thinlto-bc %s -o %t.thinlto.bc
+; RUN: llvm-lto2 run %t.thinlto.bc -o %t.thinlto.obj -r=%t.thinlto.bc,foo,plx
+; RUN: llvm-readobj -t %t.thinlto.obj | FileCheck %s
+
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.0.24210"
+
+module asm ".text"
+module asm ".def foo; .scl 3; .type 32; .endef"
+module asm ".global foo"
+module asm "foo:"
+module asm " ret"
+
+; CHECK: Symbol {
+; CHECK: Name: foo
+; CHECK: StorageClass:
+; CHECK-SAME: Static (0x3)
Index: llvm/lib/Object/RecordStreamer.h
===================================================================
--- llvm/lib/Object/RecordStreamer.h
+++ llvm/lib/Object/RecordStreamer.h
@@ -55,6 +55,15 @@
unsigned ByteAlignment, SMLoc Loc = SMLoc()) override;
void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
unsigned ByteAlignment) override;
+
+ // Ignore COFF-specific directives; we do not need any information from them,
+ // but the default implementation of these methods crashes, so we override
+ // them with versions that do nothing.
+ void BeginCOFFSymbolDef(const MCSymbol *Symbol) override {}
+ void EmitCOFFSymbolStorageClass(int StorageClass) override {}
+ void EmitCOFFSymbolType(int Type) override {}
+ void EndCOFFSymbolDef() override {}
+
/// Record .symver aliases for later processing.
void emitELFSymverDirective(StringRef AliasName,
const MCSymbol *Aliasee) override;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57073.183165.patch
Type: text/x-patch
Size: 1841 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190123/bf579688/attachment.bin>
More information about the llvm-commits
mailing list