[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