From a810bdfccae99fd62f2610d3cee9c36870a880da Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Wed, 10 Mar 2010 22:34:10 +0000 Subject: Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that indicates that an MCSymbol is external or not. (It's true if it's external.) This will be used to specify the correct information to add to non-lazy pointers. That will be explained further when this bit is used. llvm-svn: 98199 --- llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 26 ++++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp') diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 2014b429bd9..169e2cae1f8 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -404,14 +404,19 @@ getSymbolForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang, // Add information about the stub reference to ELFMMI so that the stub // gets emitted by the asmprinter. MCSymbol *Sym = getContext().GetOrCreateTemporarySymbol(Name.str()); - MCSymbol *&StubSym = ELFMMI.getGVStubEntry(Sym); - if (StubSym == 0) { + MachineModuleInfoImpl::StubValueTy &StubSym = ELFMMI.getGVStubEntry(Sym); + if (StubSym.getPointer() == 0) { Name.clear(); Mang->getNameWithPrefix(Name, GV, false); + if (GV->hasPrivateLinkage()) - StubSym = getContext().GetOrCreateTemporarySymbol(Name.str()); + StubSym = MachineModuleInfoImpl:: + StubValueTy(getContext().GetOrCreateTemporarySymbol(Name.str()), + false); else - StubSym = getContext().GetOrCreateSymbol(Name.str()); + StubSym = MachineModuleInfoImpl:: + StubValueTy(getContext().GetOrCreateSymbol(Name.str()), + !GV->hasInternalLinkage()); } return TargetLoweringObjectFile:: @@ -761,14 +766,19 @@ getSymbolForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang, // Add information about the stub reference to MachOMMI so that the stub // gets emitted by the asmprinter. MCSymbol *Sym = getContext().GetOrCreateTemporarySymbol(Name.str()); - MCSymbol *&StubSym = MachOMMI.getGVStubEntry(Sym); - if (StubSym == 0) { + MachineModuleInfoImpl::StubValueTy &StubSym = MachOMMI.getGVStubEntry(Sym); + if (StubSym.getPointer() == 0) { Name.clear(); Mang->getNameWithPrefix(Name, GV, false); + if (GV->hasPrivateLinkage()) - StubSym = getContext().GetOrCreateTemporarySymbol(Name.str()); + StubSym = MachineModuleInfoImpl:: + StubValueTy(getContext().GetOrCreateTemporarySymbol(Name.str()), + false); else - StubSym = getContext().GetOrCreateSymbol(Name.str()); + StubSym = MachineModuleInfoImpl:: + StubValueTy(getContext().GetOrCreateSymbol(Name.str()), + !GV->hasInternalLinkage()); } return TargetLoweringObjectFile:: -- cgit v1.2.3