diff options
Diffstat (limited to 'include/llvm/Analysis/ObjectUtils.h')
-rw-r--r-- | include/llvm/Analysis/ObjectUtils.h | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/include/llvm/Analysis/ObjectUtils.h b/include/llvm/Analysis/ObjectUtils.h deleted file mode 100644 index 2ad3b1717009..000000000000 --- a/include/llvm/Analysis/ObjectUtils.h +++ /dev/null @@ -1,42 +0,0 @@ -//===- Analysis/ObjectUtils.h - analysis utils for object files -*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_ANALYSIS_OBJECT_UTILS_H -#define LLVM_ANALYSIS_OBJECT_UTILS_H - -#include "llvm/IR/GlobalVariable.h" - -namespace llvm { - -/// True if GV can be left out of the object symbol table. This is the case -/// for linkonce_odr values whose address is not significant. While legal, it is -/// not normally profitable to omit them from the .o symbol table. Using this -/// analysis makes sense when the information can be passed down to the linker -/// or we are in LTO. -inline bool canBeOmittedFromSymbolTable(const GlobalValue *GV) { - if (!GV->hasLinkOnceODRLinkage()) - return false; - - // We assume that anyone who sets global unnamed_addr on a non-constant knows - // what they're doing. - if (GV->hasGlobalUnnamedAddr()) - return true; - - // If it is a non constant variable, it needs to be uniqued across shared - // objects. - if (auto *Var = dyn_cast<GlobalVariable>(GV)) - if (!Var->isConstant()) - return false; - - return GV->hasAtLeastLocalUnnamedAddr(); -} - -} - -#endif |