mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
For now disable MDNode uniquing. This fixes llvm-gcc bootstrap failure on certain Mac OS X 10.5. I am working on a proper fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80738 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
86f7cd786e
commit
3a29d2d327
@ -48,10 +48,10 @@ bool LLVMContext::RemoveDeadMetadata() {
|
||||
bool Changed = false;
|
||||
while (1) {
|
||||
|
||||
for (LLVMContextImpl::MDNodeMapTy::MapTy::iterator
|
||||
I = pImpl->MDNodes.map_begin(),
|
||||
E = pImpl->MDNodes.map_end(); I != E; ++I) {
|
||||
const MDNode *N = cast<MDNode>(I->second);
|
||||
for (SmallPtrSet<const MDNode *, 8>::iterator
|
||||
I = pImpl->MDNodes.begin(),
|
||||
E = pImpl->MDNodes.end(); I != E; ++I) {
|
||||
const MDNode *N = cast<MDNode>(*I);
|
||||
if (N->use_empty())
|
||||
DeadMDNodes.push_back(N);
|
||||
}
|
||||
|
@ -108,10 +108,7 @@ public:
|
||||
|
||||
ValueMap<char, Type, ConstantAggregateZero> AggZeroConstants;
|
||||
|
||||
typedef ValueMap<std::vector<Value*>, Type, MDNode, true /*largekey*/>
|
||||
MDNodeMapTy;
|
||||
|
||||
MDNodeMapTy MDNodes;
|
||||
SmallPtrSet<const MDNode *, 8> MDNodes;
|
||||
|
||||
typedef ValueMap<std::vector<Constant*>, ArrayType,
|
||||
ConstantArray, true /*largekey*/> ArrayConstantsTy;
|
||||
|
@ -77,13 +77,13 @@ MDNode::MDNode(LLVMContext &C, Value*const* Vals, unsigned NumVals)
|
||||
}
|
||||
|
||||
MDNode *MDNode::get(LLVMContext &Context, Value*const* Vals, unsigned NumVals) {
|
||||
LLVMContextImpl *pImpl = Context.pImpl;
|
||||
std::vector<Value*> V;
|
||||
V.reserve(NumVals);
|
||||
for (unsigned i = 0; i < NumVals; ++i)
|
||||
V.push_back(Vals[i]);
|
||||
|
||||
return pImpl->MDNodes.getOrCreate(Type::getMetadataTy(Context), V);
|
||||
// FIXME : Avoid creating duplicate node.
|
||||
return new MDNode(Context, &V[0], V.size());
|
||||
}
|
||||
|
||||
/// dropAllReferences - Remove all uses and clear node vector.
|
||||
@ -92,16 +92,8 @@ void MDNode::dropAllReferences() {
|
||||
Node.clear();
|
||||
}
|
||||
|
||||
static std::vector<Value*> getValType(MDNode *N) {
|
||||
std::vector<Value*> Elements;
|
||||
Elements.reserve(N->getNumElements());
|
||||
for (unsigned i = 0, e = N->getNumElements(); i != e; ++i)
|
||||
Elements.push_back(N->getElement(i));
|
||||
return Elements;
|
||||
}
|
||||
|
||||
MDNode::~MDNode() {
|
||||
getType()->getContext().pImpl->MDNodes.remove(this);
|
||||
getType()->getContext().pImpl->MDNodes.erase(this);
|
||||
dropAllReferences();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user