mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 16:24:23 +00:00
[CFLAA] No initializer lists for MSVC
MSVC 2012 does not understand initializer lists; remove them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216991 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -250,49 +250,50 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void visitCastInst(CastInst &Inst) {
|
void visitCastInst(CastInst &Inst) {
|
||||||
Output.push_back({&Inst, Inst.getOperand(0), EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Inst.getOperand(0), EdgeType::Assign,
|
||||||
|
AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitBinaryOperator(BinaryOperator &Inst) {
|
void visitBinaryOperator(BinaryOperator &Inst) {
|
||||||
auto *Op1 = Inst.getOperand(0);
|
auto *Op1 = Inst.getOperand(0);
|
||||||
auto *Op2 = Inst.getOperand(1);
|
auto *Op2 = Inst.getOperand(1);
|
||||||
Output.push_back({&Inst, Op1, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Op1, EdgeType::Assign, AttrNone));
|
||||||
Output.push_back({&Inst, Op2, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Op2, EdgeType::Assign, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitAtomicCmpXchgInst(AtomicCmpXchgInst &Inst) {
|
void visitAtomicCmpXchgInst(AtomicCmpXchgInst &Inst) {
|
||||||
auto *Ptr = Inst.getPointerOperand();
|
auto *Ptr = Inst.getPointerOperand();
|
||||||
auto *Val = Inst.getNewValOperand();
|
auto *Val = Inst.getNewValOperand();
|
||||||
Output.push_back({Ptr, Val, EdgeType::Dereference, AttrNone});
|
Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitAtomicRMWInst(AtomicRMWInst &Inst) {
|
void visitAtomicRMWInst(AtomicRMWInst &Inst) {
|
||||||
auto *Ptr = Inst.getPointerOperand();
|
auto *Ptr = Inst.getPointerOperand();
|
||||||
auto *Val = Inst.getValOperand();
|
auto *Val = Inst.getValOperand();
|
||||||
Output.push_back({Ptr, Val, EdgeType::Dereference, AttrNone});
|
Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitPHINode(PHINode &Inst) {
|
void visitPHINode(PHINode &Inst) {
|
||||||
for (unsigned I = 0, E = Inst.getNumIncomingValues(); I != E; ++I) {
|
for (unsigned I = 0, E = Inst.getNumIncomingValues(); I != E; ++I) {
|
||||||
Value *Val = Inst.getIncomingValue(I);
|
Value *Val = Inst.getIncomingValue(I);
|
||||||
Output.push_back({&Inst, Val, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Val, EdgeType::Assign, AttrNone));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitGetElementPtrInst(GetElementPtrInst &Inst) {
|
void visitGetElementPtrInst(GetElementPtrInst &Inst) {
|
||||||
auto *Op = Inst.getPointerOperand();
|
auto *Op = Inst.getPointerOperand();
|
||||||
Output.push_back({&Inst, Op, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Op, EdgeType::Assign, AttrNone));
|
||||||
for (auto I = Inst.idx_begin(), E = Inst.idx_end(); I != E; ++I)
|
for (auto I = Inst.idx_begin(), E = Inst.idx_end(); I != E; ++I)
|
||||||
Output.push_back({&Inst, *I, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, *I, EdgeType::Assign, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitSelectInst(SelectInst &Inst) {
|
void visitSelectInst(SelectInst &Inst) {
|
||||||
auto *Condition = Inst.getCondition();
|
auto *Condition = Inst.getCondition();
|
||||||
Output.push_back({&Inst, Condition, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Condition, EdgeType::Assign, AttrNone));
|
||||||
auto *TrueVal = Inst.getTrueValue();
|
auto *TrueVal = Inst.getTrueValue();
|
||||||
Output.push_back({&Inst, TrueVal, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, TrueVal, EdgeType::Assign, AttrNone));
|
||||||
auto *FalseVal = Inst.getFalseValue();
|
auto *FalseVal = Inst.getFalseValue();
|
||||||
Output.push_back({&Inst, FalseVal, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, FalseVal, EdgeType::Assign, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitAllocaInst(AllocaInst &) {}
|
void visitAllocaInst(AllocaInst &) {}
|
||||||
@ -300,13 +301,13 @@ public:
|
|||||||
void visitLoadInst(LoadInst &Inst) {
|
void visitLoadInst(LoadInst &Inst) {
|
||||||
auto *Ptr = Inst.getPointerOperand();
|
auto *Ptr = Inst.getPointerOperand();
|
||||||
auto *Val = &Inst;
|
auto *Val = &Inst;
|
||||||
Output.push_back({Val, Ptr, EdgeType::Reference, AttrNone});
|
Output.push_back(Edge(Val, Ptr, EdgeType::Reference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitStoreInst(StoreInst &Inst) {
|
void visitStoreInst(StoreInst &Inst) {
|
||||||
auto *Ptr = Inst.getPointerOperand();
|
auto *Ptr = Inst.getPointerOperand();
|
||||||
auto *Val = Inst.getValueOperand();
|
auto *Val = Inst.getValueOperand();
|
||||||
Output.push_back({Ptr, Val, EdgeType::Dereference, AttrNone});
|
Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isFunctionExternal(Function *Fn) {
|
static bool isFunctionExternal(Function *Fn) {
|
||||||
@ -427,7 +428,7 @@ public:
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto NewAttrs = SubAttrs | MainAttrs;
|
auto NewAttrs = SubAttrs | MainAttrs;
|
||||||
Output.push_back({MainVal, SubVal, EdgeType::Assign, NewAttrs});
|
Output.push_back(Edge(MainVal, SubVal, EdgeType::Assign, NewAttrs));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -444,7 +445,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Value *V : Inst.arg_operands())
|
for (Value *V : Inst.arg_operands())
|
||||||
Output.push_back({&Inst, V, EdgeType::Assign, AttrAll});
|
Output.push_back(Edge(&Inst, V, EdgeType::Assign, AttrAll));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitCallInst(CallInst &Inst) { visitCallLikeInst(Inst); }
|
void visitCallInst(CallInst &Inst) { visitCallLikeInst(Inst); }
|
||||||
@ -459,40 +460,40 @@ public:
|
|||||||
void visitExtractElementInst(ExtractElementInst &Inst) {
|
void visitExtractElementInst(ExtractElementInst &Inst) {
|
||||||
auto *Ptr = Inst.getVectorOperand();
|
auto *Ptr = Inst.getVectorOperand();
|
||||||
auto *Val = &Inst;
|
auto *Val = &Inst;
|
||||||
Output.push_back({Val, Ptr, EdgeType::Reference, AttrNone});
|
Output.push_back(Edge(Val, Ptr, EdgeType::Reference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitInsertElementInst(InsertElementInst &Inst) {
|
void visitInsertElementInst(InsertElementInst &Inst) {
|
||||||
auto *Vec = Inst.getOperand(0);
|
auto *Vec = Inst.getOperand(0);
|
||||||
auto *Val = Inst.getOperand(1);
|
auto *Val = Inst.getOperand(1);
|
||||||
Output.push_back({&Inst, Vec, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Vec, EdgeType::Assign, AttrNone));
|
||||||
Output.push_back({&Inst, Val, EdgeType::Dereference, AttrNone});
|
Output.push_back(Edge(&Inst, Val, EdgeType::Dereference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitLandingPadInst(LandingPadInst &Inst) {
|
void visitLandingPadInst(LandingPadInst &Inst) {
|
||||||
// Exceptions come from "nowhere", from our analysis' perspective.
|
// Exceptions come from "nowhere", from our analysis' perspective.
|
||||||
// So we place the instruction its own group, noting that said group may
|
// So we place the instruction its own group, noting that said group may
|
||||||
// alias externals
|
// alias externals
|
||||||
Output.push_back({&Inst, &Inst, EdgeType::Assign, AttrAll});
|
Output.push_back(Edge(&Inst, &Inst, EdgeType::Assign, AttrAll));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitInsertValueInst(InsertValueInst &Inst) {
|
void visitInsertValueInst(InsertValueInst &Inst) {
|
||||||
auto *Agg = Inst.getOperand(0);
|
auto *Agg = Inst.getOperand(0);
|
||||||
auto *Val = Inst.getOperand(1);
|
auto *Val = Inst.getOperand(1);
|
||||||
Output.push_back({&Inst, Agg, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, Agg, EdgeType::Assign, AttrNone));
|
||||||
Output.push_back({&Inst, Val, EdgeType::Dereference, AttrNone});
|
Output.push_back(Edge(&Inst, Val, EdgeType::Dereference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitExtractValueInst(ExtractValueInst &Inst) {
|
void visitExtractValueInst(ExtractValueInst &Inst) {
|
||||||
auto *Ptr = Inst.getAggregateOperand();
|
auto *Ptr = Inst.getAggregateOperand();
|
||||||
Output.push_back({&Inst, Ptr, EdgeType::Reference, AttrNone});
|
Output.push_back(Edge(&Inst, Ptr, EdgeType::Reference, AttrNone));
|
||||||
}
|
}
|
||||||
|
|
||||||
void visitShuffleVectorInst(ShuffleVectorInst &Inst) {
|
void visitShuffleVectorInst(ShuffleVectorInst &Inst) {
|
||||||
auto *From1 = Inst.getOperand(0);
|
auto *From1 = Inst.getOperand(0);
|
||||||
auto *From2 = Inst.getOperand(1);
|
auto *From2 = Inst.getOperand(1);
|
||||||
Output.push_back({&Inst, From1, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, From1, EdgeType::Assign, AttrNone));
|
||||||
Output.push_back({&Inst, From2, EdgeType::Assign, AttrNone});
|
Output.push_back(Edge(&Inst, From2, EdgeType::Assign, AttrNone));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -849,7 +850,7 @@ static FunctionInfo buildSetsFrom(CFLAliasAnalysis &Analysis, Function *Fn) {
|
|||||||
DenseMap<GraphT::Node, Value *> NodeValueMap;
|
DenseMap<GraphT::Node, Value *> NodeValueMap;
|
||||||
NodeValueMap.resize(Map.size());
|
NodeValueMap.resize(Map.size());
|
||||||
for (const auto &Pair : Map)
|
for (const auto &Pair : Map)
|
||||||
NodeValueMap.insert({Pair.second, Pair.first});
|
NodeValueMap.insert(std::make_pair(Pair.second, Pair.first));
|
||||||
|
|
||||||
const auto findValueOrDie = [&NodeValueMap](GraphT::Node Node) {
|
const auto findValueOrDie = [&NodeValueMap](GraphT::Node Node) {
|
||||||
auto ValIter = NodeValueMap.find(Node);
|
auto ValIter = NodeValueMap.find(Node);
|
||||||
@ -921,7 +922,7 @@ static FunctionInfo buildSetsFrom(CFLAliasAnalysis &Analysis, Function *Fn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CFLAliasAnalysis::scan(Function *Fn) {
|
void CFLAliasAnalysis::scan(Function *Fn) {
|
||||||
auto InsertPair = Cache.insert({Fn, Optional<FunctionInfo>()});
|
auto InsertPair = Cache.insert(std::make_pair(Fn, Optional<FunctionInfo>()));
|
||||||
(void)InsertPair;
|
(void)InsertPair;
|
||||||
assert(InsertPair.second &&
|
assert(InsertPair.second &&
|
||||||
"Trying to scan a function that has already been cached");
|
"Trying to scan a function that has already been cached");
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
@ -319,7 +320,7 @@ template <typename T> class StratifiedSetsBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StratifiedIndex Number = StratLinks.size();
|
StratifiedIndex Number = StratLinks.size();
|
||||||
Remaps.insert({Link.Number, Number});
|
Remaps.insert(std::make_pair(Link.Number, Number));
|
||||||
StratLinks.push_back(Link.getLink());
|
StratLinks.push_back(Link.getLink());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,7 +495,7 @@ private:
|
|||||||
// necessary.
|
// necessary.
|
||||||
bool addAtMerging(const T &ToAdd, StratifiedIndex Index) {
|
bool addAtMerging(const T &ToAdd, StratifiedIndex Index) {
|
||||||
StratifiedInfo Info = {Index};
|
StratifiedInfo Info = {Index};
|
||||||
auto Pair = Values.insert({ToAdd, Info});
|
auto Pair = Values.insert(std::make_pair(ToAdd, Info));
|
||||||
if (Pair.second)
|
if (Pair.second)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user