LTO: expose LTO_SYMBOL_COMDAT flag, which indicates that the definition is part of...
authorPeter Collingbourne <peter@pcc.me.uk>
Thu, 11 Jun 2015 21:41:27 +0000 (21:41 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Thu, 11 Jun 2015 21:41:27 +0000 (21:41 +0000)
Reviewers: rafael

Subscribers: llvm-commits, ruiu

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239559 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm-c/lto.h
lib/LTO/LTOModule.cpp

index 1db0778..9f37dd7 100644 (file)
@@ -62,7 +62,8 @@ typedef enum {
     LTO_SYMBOL_SCOPE_HIDDEN                = 0x00001000,
     LTO_SYMBOL_SCOPE_PROTECTED             = 0x00002000,
     LTO_SYMBOL_SCOPE_DEFAULT               = 0x00001800,
-    LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800
+    LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800,
+    LTO_SYMBOL_COMDAT                      = 0x00004000
 } lto_symbol_attributes;
 
 /**
index 5cdbca6..0794d3c 100644 (file)
@@ -468,6 +468,9 @@ void LTOModule::addDefinedSymbol(const char *Name, const GlobalValue *def,
   else
     attr |= LTO_SYMBOL_SCOPE_DEFAULT;
 
+  if (def->hasComdat())
+    attr |= LTO_SYMBOL_COMDAT;
+
   auto Iter = _defines.insert(Name).first;
 
   // fill information structure