mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 05:25:47 +00:00
move getNameWithPrefix and getSymbol to TargetMachine.
TargetLoweringBase is implemented in CodeGen, so before this patch we had a dependency fom Target to CodeGen. This would show up as a link failure of llvm-stress when building with -DBUILD_SHARED_LIBS=ON. This fixes pr18900. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201711 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -17,9 +17,14 @@
|
||||
#include "llvm/IR/GlobalAlias.h"
|
||||
#include "llvm/IR/GlobalValue.h"
|
||||
#include "llvm/IR/GlobalVariable.h"
|
||||
#include "llvm/IR/Mangler.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/MC/MCCodeGenInfo.h"
|
||||
#include "llvm/MC/MCContext.h"
|
||||
#include "llvm/MC/SectionKind.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Target/TargetLowering.h"
|
||||
#include "llvm/Target/TargetLoweringObjectFile.h"
|
||||
using namespace llvm;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -192,3 +197,28 @@ void TargetMachine::setFunctionSections(bool V) {
|
||||
void TargetMachine::setDataSections(bool V) {
|
||||
DataSections = V;
|
||||
}
|
||||
|
||||
void TargetMachine::getNameWithPrefix(SmallVectorImpl<char> &Name,
|
||||
const GlobalValue *GV, Mangler &Mang,
|
||||
bool MayAlwaysUsePrivate) const {
|
||||
if (MayAlwaysUsePrivate || !GV->hasPrivateLinkage()) {
|
||||
// Simple case: If GV is not private, it is not important to find out if
|
||||
// private labels are legal in this case or not.
|
||||
Mang.getNameWithPrefix(Name, GV, false);
|
||||
return;
|
||||
}
|
||||
SectionKind GVKind = TargetLoweringObjectFile::getKindForGlobal(GV, *this);
|
||||
const TargetLoweringObjectFile &TLOF =
|
||||
getTargetLowering()->getObjFileLowering();
|
||||
const MCSection *TheSection = TLOF.SectionForGlobal(GV, GVKind, Mang, *this);
|
||||
bool CannotUsePrivateLabel = TLOF.isSectionAtomizableBySymbols(*TheSection);
|
||||
Mang.getNameWithPrefix(Name, GV, CannotUsePrivateLabel);
|
||||
}
|
||||
|
||||
MCSymbol *TargetMachine::getSymbol(const GlobalValue *GV, Mangler &Mang) const {
|
||||
SmallString<60> NameStr;
|
||||
getNameWithPrefix(NameStr, GV, Mang);
|
||||
const TargetLoweringObjectFile &TLOF =
|
||||
getTargetLowering()->getObjFileLowering();
|
||||
return TLOF.getContext().GetOrCreateSymbol(NameStr.str());
|
||||
}
|
||||
|
Reference in New Issue
Block a user