mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-27 04:18:42 +00:00
Fixes for Microsoft Visual Studio 2010, from Steven Watanabe!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103457 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
1 parent
3cbae239bb
commit
7d9663c70b
9 files changed
+41
-7
No files matched your search
@@ -191,7 +191,7 @@ public:
|
||||
/// insert - Insert a new value into the union/find set, ignoring the request
|
||||
/// if the value already exists.
|
||||
iterator insert(const ElemTy &Data) {
|
||||
return TheMapping.insert(Data).first;
|
||||
return TheMapping.insert(ECValue(Data)).first;
|
||||
}
|
||||
|
||||
/// findLeader - Given a value in the set, return a member iterator for the
|
||||
|
||||
@@ -83,6 +83,12 @@ static CallInst *ReplaceCallWith(const char *NewFn, CallInst *CI,
|
||||
return NewCI;
|
||||
}
|
||||
|
||||
// VisualStudio defines setjmp as _setjmp
|
||||
#if defined(_MSC_VER) && defined(setjmp)
|
||||
#define setjmp_undefined_for_visual_studio
|
||||
#undef setjmp
|
||||
#endif
|
||||
|
||||
void IntrinsicLowering::AddPrototypes(Module &M) {
|
||||
LLVMContext &Context = M.getContext();
|
||||
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
|
||||
|
||||
@@ -3726,6 +3726,12 @@ SelectionDAGBuilder::EmitFuncArgumentDbgValue(const DbgValueInst &DI,
|
||||
return true;
|
||||
}
|
||||
|
||||
// VisualStudio defines setjmp as _setjmp
|
||||
#if defined(_MSC_VER) && defined(setjmp)
|
||||
#define setjmp_undefined_for_visual_studio
|
||||
#undef setjmp
|
||||
#endif
|
||||
|
||||
/// visitIntrinsicCall - Lower the call to the specified intrinsic function. If
|
||||
/// we want to emit this as a call to a named external function, return the name
|
||||
/// otherwise lower it and return null.
|
||||
|
||||
@@ -2417,7 +2417,7 @@ std::pair<unsigned, const TargetRegisterClass*> TargetLowering::
|
||||
getRegForInlineAsmConstraint(const std::string &Constraint,
|
||||
EVT VT) const {
|
||||
if (Constraint[0] != '{')
|
||||
return std::pair<unsigned, const TargetRegisterClass*>(0, 0);
|
||||
return std::make_pair(0u, static_cast<TargetRegisterClass*>(0));
|
||||
assert(*(Constraint.end()-1) == '}' && "Not a brace enclosed constraint?");
|
||||
|
||||
// Remove the braces from around the name.
|
||||
@@ -2449,7 +2449,7 @@ getRegForInlineAsmConstraint(const std::string &Constraint,
|
||||
}
|
||||
}
|
||||
|
||||
return std::pair<unsigned, const TargetRegisterClass*>(0, 0);
|
||||
return std::make_pair(0u, static_cast<const TargetRegisterClass*>(0));
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@@ -451,9 +451,9 @@ private:
|
||||
// reg.
|
||||
MachineBasicBlock *useMBB = useInst->getParent();
|
||||
MachineBasicBlock::iterator useItr(useInst);
|
||||
tii->copyRegToReg(*useMBB, next(useItr), li->reg, newVReg, trc, trc,
|
||||
tii->copyRegToReg(*useMBB, llvm::next(useItr), li->reg, newVReg, trc, trc,
|
||||
DebugLoc());
|
||||
MachineInstr *copyMI = next(useItr);
|
||||
MachineInstr *copyMI = llvm::next(useItr);
|
||||
copyMI->addRegisterKilled(newVReg, tri);
|
||||
SlotIndex copyIdx = lis->InsertMachineInstrInMaps(copyMI);
|
||||
|
||||
|
||||
@@ -2899,7 +2899,7 @@ LSRInstance::HoistInsertPosition(BasicBlock::iterator IP,
|
||||
// instead of at the end, so that it can be used for other expansions.
|
||||
if (IDom == Inst->getParent() &&
|
||||
(!BetterPos || DT.dominates(BetterPos, Inst)))
|
||||
BetterPos = next(BasicBlock::iterator(Inst));
|
||||
BetterPos = llvm::next(BasicBlock::iterator(Inst));
|
||||
}
|
||||
if (!AllDominate)
|
||||
break;
|
||||
|
||||
@@ -861,7 +861,7 @@ void PromoteMem2Reg::PromoteSingleBlockAlloca(AllocaInst *AI, AllocaInfo &Info,
|
||||
// Find the nearest store that has a lower than this load.
|
||||
StoresByIndexTy::iterator I =
|
||||
std::lower_bound(StoresByIndex.begin(), StoresByIndex.end(),
|
||||
std::pair<unsigned, StoreInst*>(LoadIdx, 0),
|
||||
std::pair<unsigned, StoreInst*>(LoadIdx, static_cast<StoreInst*>(0)),
|
||||
StoreIndexSearchPredicate());
|
||||
|
||||
// If there is no store before this load, then we can't promote this load.
|
||||
|
||||
@@ -30,6 +30,8 @@ void IntrinsicEmitter::run(raw_ostream &OS) {
|
||||
if (TargetOnly && !Ints.empty())
|
||||
TargetPrefix = Ints[0].TargetPrefix;
|
||||
|
||||
EmitPrefix(OS);
|
||||
|
||||
// Emit the enum information.
|
||||
EmitEnumInfo(Ints, OS);
|
||||
|
||||
@@ -59,6 +61,23 @@ void IntrinsicEmitter::run(raw_ostream &OS) {
|
||||
|
||||
// Emit code to translate GCC builtins into LLVM intrinsics.
|
||||
EmitIntrinsicToGCCBuiltinMap(Ints, OS);
|
||||
|
||||
EmitSuffix(OS);
|
||||
}
|
||||
|
||||
void IntrinsicEmitter::EmitPrefix(raw_ostream &OS) {
|
||||
OS << "// VisualStudio defines setjmp as _setjmp\n"
|
||||
"#if defined(_MSC_VER) && defined(setjmp)\n"
|
||||
"#define setjmp_undefined_for_visual_studio\n"
|
||||
"#undef setjmp\n"
|
||||
"#endif\n\n";
|
||||
}
|
||||
|
||||
void IntrinsicEmitter::EmitSuffix(raw_ostream &OS) {
|
||||
OS << "#if defined(_MSC_VER) && defined(setjmp_undefined_for_visual_studio)\n"
|
||||
"// let's return it to _setjmp state\n"
|
||||
"#define setjmp _setjmp\n"
|
||||
"#endif\n\n";
|
||||
}
|
||||
|
||||
void IntrinsicEmitter::EmitEnumInfo(const std::vector<CodeGenIntrinsic> &Ints,
|
||||
|
||||
@@ -28,6 +28,8 @@ namespace llvm {
|
||||
: Records(R), TargetOnly(T) {}
|
||||
|
||||
void run(raw_ostream &OS);
|
||||
|
||||
void EmitPrefix(raw_ostream &OS);
|
||||
|
||||
void EmitEnumInfo(const std::vector<CodeGenIntrinsic> &Ints,
|
||||
raw_ostream &OS);
|
||||
@@ -50,6 +52,7 @@ namespace llvm {
|
||||
raw_ostream &OS);
|
||||
void EmitIntrinsicToGCCBuiltinMap(const std::vector<CodeGenIntrinsic> &Ints,
|
||||
raw_ostream &OS);
|
||||
void EmitSuffix(raw_ostream &OS);
|
||||
};
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
Reference in new issue
Block a user