mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 13:40:30 +00:00
Move llvm::emitLinkerFlagsForGlobalCOFF() to Mangler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299183 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
537523b656
commit
8dc921e4a6
@ -187,9 +187,6 @@ public:
|
||||
const TargetMachine &TM) const override;
|
||||
};
|
||||
|
||||
void emitLinkerFlagsForGlobalCOFF(raw_ostream &OS, const GlobalValue *GV,
|
||||
const Triple &TT, Mangler &Mangler);
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_CODEGEN_TARGETLOWERINGOBJECTFILEIMPL_H
|
||||
|
@ -21,6 +21,7 @@ namespace llvm {
|
||||
|
||||
class DataLayout;
|
||||
template <typename T> class SmallVectorImpl;
|
||||
class Triple;
|
||||
class Twine;
|
||||
class raw_ostream;
|
||||
|
||||
@ -46,6 +47,9 @@ public:
|
||||
const Twine &GVName, const DataLayout &DL);
|
||||
};
|
||||
|
||||
void emitLinkerFlagsForGlobalCOFF(raw_ostream &OS, const GlobalValue *GV,
|
||||
const Triple &TT, Mangler &Mangler);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
@ -970,37 +970,6 @@ static int getSelectionForCOFF(const GlobalValue *GV) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void llvm::emitLinkerFlagsForGlobalCOFF(raw_ostream &OS, const GlobalValue *GV,
|
||||
const Triple &TT, Mangler &Mangler) {
|
||||
if (!GV->hasDLLExportStorageClass() || GV->isDeclaration())
|
||||
return;
|
||||
|
||||
if (TT.isKnownWindowsMSVCEnvironment())
|
||||
OS << " /EXPORT:";
|
||||
else
|
||||
OS << " -export:";
|
||||
|
||||
if (TT.isWindowsGNUEnvironment() || TT.isWindowsCygwinEnvironment()) {
|
||||
std::string Flag;
|
||||
raw_string_ostream FlagOS(Flag);
|
||||
Mangler.getNameWithPrefix(FlagOS, GV, false);
|
||||
FlagOS.flush();
|
||||
if (Flag[0] == GV->getParent()->getDataLayout().getGlobalPrefix())
|
||||
OS << Flag.substr(1);
|
||||
else
|
||||
OS << Flag;
|
||||
} else {
|
||||
Mangler.getNameWithPrefix(OS, GV, false);
|
||||
}
|
||||
|
||||
if (!GV->getValueType()->isFunctionTy()) {
|
||||
if (TT.isKnownWindowsMSVCEnvironment())
|
||||
OS << ",DATA";
|
||||
else
|
||||
OS << ",data";
|
||||
}
|
||||
}
|
||||
|
||||
MCSection *TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(
|
||||
const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const {
|
||||
int Selection = 0;
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
#include "llvm/IR/Mangler.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
@ -172,3 +173,34 @@ void Mangler::getNameWithPrefix(SmallVectorImpl<char> &OutName,
|
||||
raw_svector_ostream OS(OutName);
|
||||
getNameWithPrefix(OS, GV, CannotUsePrivateLabel);
|
||||
}
|
||||
|
||||
void llvm::emitLinkerFlagsForGlobalCOFF(raw_ostream &OS, const GlobalValue *GV,
|
||||
const Triple &TT, Mangler &Mangler) {
|
||||
if (!GV->hasDLLExportStorageClass() || GV->isDeclaration())
|
||||
return;
|
||||
|
||||
if (TT.isKnownWindowsMSVCEnvironment())
|
||||
OS << " /EXPORT:";
|
||||
else
|
||||
OS << " -export:";
|
||||
|
||||
if (TT.isWindowsGNUEnvironment() || TT.isWindowsCygwinEnvironment()) {
|
||||
std::string Flag;
|
||||
raw_string_ostream FlagOS(Flag);
|
||||
Mangler.getNameWithPrefix(FlagOS, GV, false);
|
||||
FlagOS.flush();
|
||||
if (Flag[0] == GV->getParent()->getDataLayout().getGlobalPrefix())
|
||||
OS << Flag.substr(1);
|
||||
else
|
||||
OS << Flag;
|
||||
} else {
|
||||
Mangler.getNameWithPrefix(OS, GV, false);
|
||||
}
|
||||
|
||||
if (!GV->getValueType()->isFunctionTy()) {
|
||||
if (TT.isKnownWindowsMSVCEnvironment())
|
||||
OS << ",DATA";
|
||||
else
|
||||
OS << ",data";
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "llvm/Bitcode/BitcodeReader.h"
|
||||
#include "llvm/Bitcode/BitcodeWriter.h"
|
||||
#include "llvm/CodeGen/Analysis.h"
|
||||
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
|
||||
#include "llvm/IR/AutoUpgrade.h"
|
||||
#include "llvm/IR/DiagnosticPrinter.h"
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
|
@ -16,10 +16,10 @@
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Analysis/ObjectUtils.h"
|
||||
#include "llvm/Bitcode/BitcodeReader.h"
|
||||
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/DiagnosticPrinter.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/Mangler.h"
|
||||
#include "llvm/IR/Metadata.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/MC/MCExpr.h"
|
||||
|
Loading…
Reference in New Issue
Block a user