Lines Matching defs:BlockInfo
1144 struct BlockInfo {
1177 const_cast<const BlockInfo *>(this)->getAssignmentMap(Kind));
1222 bool operator==(const BlockInfo &Other) const {
1229 bool operator!=(const BlockInfo &Other) const { return !(*this == Other); }
1258 static BlockInfo join(const BlockInfo &A, const BlockInfo &B, int NumVars) {
1270 // BlockInfo::init initializes all variable entries to the ⊤ value so we
1274 BlockInfo Join;
1299 DenseMap<const BasicBlock *, BlockInfo> LiveIn;
1300 DenseMap<const BasicBlock *, BlockInfo> LiveOut;
1338 BlockInfo joinBlockInfo(const BlockInfo &A, const BlockInfo &B);
1344 void process(BasicBlock &BB, BlockInfo *LiveSet);
1349 void processNonDbgInstruction(Instruction &I, BlockInfo *LiveSet);
1350 void processDbgInstruction(DbgInfoIntrinsic &I, BlockInfo *LiveSet);
1353 void processTaggedInstruction(Instruction &I, BlockInfo *LiveSet);
1356 void processUntaggedInstruction(Instruction &I, BlockInfo *LiveSet);
1357 void processDbgAssign(AssignRecord Assign, BlockInfo *LiveSet);
1358 void processDbgVariableRecord(DbgVariableRecord &DVR, BlockInfo *LiveSet);
1361 BlockInfo *LiveSet);
1363 void addMemDef(BlockInfo *LiveSet, VariableID Var, const Assignment &AV);
1365 void addDbgDef(BlockInfo *LiveSet, VariableID Var, const Assignment &AV);
1369 void setLocKind(BlockInfo *LiveSet, VariableID Var, LocKind K);
1372 LocKind getLocKind(BlockInfo *LiveSet, VariableID Var);
1374 bool hasVarWithAssignment(BlockInfo *LiveSet, BlockInfo::AssignmentKind Kind,
1409 void AssignmentTrackingLowering::setLocKind(BlockInfo *LiveSet, VariableID Var,
1411 auto SetKind = [this](BlockInfo *LiveSet, VariableID Var, LocKind K) {
1423 AssignmentTrackingLowering::getLocKind(BlockInfo *LiveSet, VariableID Var) {
1427 void AssignmentTrackingLowering::addMemDef(BlockInfo *LiveSet, VariableID Var,
1429 LiveSet->setAssignment(BlockInfo::Stack, Var, AV);
1437 LiveSet->setAssignment(BlockInfo::Stack, Frag, FragAV);
1440 void AssignmentTrackingLowering::addDbgDef(BlockInfo *LiveSet, VariableID Var,
1442 LiveSet->setAssignment(BlockInfo::Debug, Var, AV);
1450 LiveSet->setAssignment(BlockInfo::Debug, Frag, FragAV);
1469 BlockInfo *LiveSet, BlockInfo::AssignmentKind Kind, VariableID Var,
1599 Instruction &I, AssignmentTrackingLowering::BlockInfo *LiveSet) {
1607 Instruction &I, AssignmentTrackingLowering::BlockInfo *LiveSet) {
1676 Instruction &I, AssignmentTrackingLowering::BlockInfo *LiveSet) {
1703 if (hasVarWithAssignment(LiveSet, BlockInfo::Debug, Var, AV)) {
1733 Assignment DbgAV = LiveSet->getAssignment(BlockInfo::Debug, Var);
1766 BlockInfo *LiveSet) {
1783 if (hasVarWithAssignment(LiveSet, BlockInfo::Stack, Var, AV)) {
1814 BlockInfo *LiveSet) {
1850 DbgInfoIntrinsic &I, AssignmentTrackingLowering::BlockInfo *LiveSet) {
1865 DbgVariableRecord &DVR, AssignmentTrackingLowering::BlockInfo *LiveSet) {
1890 void AssignmentTrackingLowering::process(BasicBlock &BB, BlockInfo *LiveSet) {
2022 AssignmentTrackingLowering::BlockInfo
2023 AssignmentTrackingLowering::joinBlockInfo(const BlockInfo &A,
2024 const BlockInfo &B) {
2025 return BlockInfo::join(A, B, TrackedVariablesVectorSize);
2046 auto It = LiveIn.try_emplace(&BB, BlockInfo());
2055 const BlockInfo &PredLiveOut = LiveOut.find(VisitedPreds[0])->second;
2071 const BlockInfo &PredLiveOut0 = LiveOut.find(VisitedPreds[0])->second;
2072 const BlockInfo &PredLiveOut1 = LiveOut.find(VisitedPreds[1])->second;
2073 BlockInfo BBLiveIn = joinBlockInfo(PredLiveOut0, PredLiveOut1);
2352 BlockInfo LiveSet = LiveIn[BB];