[lld] r239338 - COFF: Skip internal symbols in bitcode files.

Peter Collingbourne peter at pcc.me.uk
Mon Jun 8 13:21:29 PDT 2015


Author: pcc
Date: Mon Jun  8 15:21:28 2015
New Revision: 239338

URL: http://llvm.org/viewvc/llvm-project?rev=239338&view=rev
Log:
COFF: Skip internal symbols in bitcode files.

Differential Revision: http://reviews.llvm.org/D10319

Modified:
    lld/trunk/COFF/InputFiles.cpp
    lld/trunk/test/COFF/Inputs/lto-dep.ll
    lld/trunk/test/COFF/lto.ll

Modified: lld/trunk/COFF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/InputFiles.cpp?rev=239338&r1=239337&r2=239338&view=diff
==============================================================================
--- lld/trunk/COFF/InputFiles.cpp (original)
+++ lld/trunk/COFF/InputFiles.cpp Mon Jun  8 15:21:28 2015
@@ -257,9 +257,13 @@ std::error_code BitcodeFile::parse() {
   }
 
   for (unsigned I = 0, E = M->getSymbolCount(); I != E; ++I) {
+    lto_symbol_attributes Attrs = M->getSymbolAttributes(I);
+    if ((Attrs & LTO_SYMBOL_SCOPE_MASK) == LTO_SYMBOL_SCOPE_INTERNAL)
+      continue;
+
     StringRef SymName = M->getSymbolName(I);
-    if ((M->getSymbolAttributes(I) & LTO_SYMBOL_DEFINITION_MASK) ==
-        LTO_SYMBOL_DEFINITION_UNDEFINED) {
+    int SymbolDef = Attrs & LTO_SYMBOL_DEFINITION_MASK;
+    if (SymbolDef == LTO_SYMBOL_DEFINITION_UNDEFINED) {
       SymbolBodies.push_back(new (Alloc) Undefined(SymName));
     } else {
       SymbolBodies.push_back(new (Alloc) DefinedBitcode(SymName));

Modified: lld/trunk/test/COFF/Inputs/lto-dep.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/lto-dep.ll?rev=239338&r1=239337&r2=239338&view=diff
==============================================================================
--- lld/trunk/test/COFF/Inputs/lto-dep.ll (original)
+++ lld/trunk/test/COFF/Inputs/lto-dep.ll Mon Jun  8 15:21:28 2015
@@ -4,3 +4,7 @@ target triple = "x86_64-pc-windows-msvc"
 define void @foo() {
   ret void
 }
+
+define internal void @internal() {
+  ret void
+}

Modified: lld/trunk/test/COFF/lto.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/lto.ll?rev=239338&r1=239337&r2=239338&view=diff
==============================================================================
--- lld/trunk/test/COFF/lto.ll (original)
+++ lld/trunk/test/COFF/lto.ll Mon Jun  8 15:21:28 2015
@@ -54,16 +54,34 @@
 ; TEXT-01: Disassembly of section .text:
 ; TEXT-01-NEXT: .text:
 ; TEXT-01-NEXT: subq	$40, %rsp
-; TEXT-01-NEXT: callq	7
+; TEXT-01-NEXT: callq	23
 ; TEXT-01-NEXT: xorl	%eax, %eax
 ; TEXT-01-NEXT: addq	$40, %rsp
 ; TEXT-01-NEXT: retq
 ; TEXT-01-NEXT: retq
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: int3
+; TEXT-01-NEXT: retq
 
-; HEADERS-10: AddressOfEntryPoint: 0x2010
+; HEADERS-10: AddressOfEntryPoint: 0x2020
 ; TEXT-10: Disassembly of section .text:
 ; TEXT-10-NEXT: .text:
 ; TEXT-10-NEXT: retq
+; TEXT-10-NEXT: nopw    %cs:(%rax,%rax)
+; TEXT-10-NEXT: retq
 ; TEXT-10-NEXT: int3
 ; TEXT-10-NEXT: int3
 ; TEXT-10-NEXT: int3
@@ -80,7 +98,7 @@
 ; TEXT-10-NEXT: int3
 ; TEXT-10-NEXT: int3
 ; TEXT-10-NEXT: subq	$40, %rsp
-; TEXT-10-NEXT: callq	-25
+; TEXT-10-NEXT: callq	-41
 ; TEXT-10-NEXT: xorl	%eax, %eax
 ; TEXT-10-NEXT: addq	$40, %rsp
 ; TEXT-10-NEXT: retq
@@ -104,3 +122,7 @@ $f2 = comdat any
 define i32 @f2() comdat($f2) {
   ret i32 2
 }
+
+define internal void @internal() {
+  ret void
+}





More information about the llvm-commits mailing list