Lines Matching full:assignment

987 /// that interprets assignment tracking debug info metadata and stores in IR to
1016 /// An abstraction of the assignment of a value to a variable or memory
1019 /// An Assignment is Known or NoneOrPhi. A Known Assignment means we have a
1021 /// can't) know the ID of the last assignment that took place.
1023 /// The Status of the Assignment (Known or NoneOrPhi) is another
1031 struct Assignment { struct in __anon3afac2c40211::AssignmentTrackingLowering
1033 /// ID of the assignment. nullptr if Status is not Known.
1039 bool isSameSourceAssignment(const Assignment &Other) const { in isSameSourceAssignment() argument
1061 static Assignment make(DIAssignID *ID, DbgAssignIntrinsic *Source) { in make() argument
1062 return Assignment(Known, ID, Source); in make()
1064 static Assignment make(DIAssignID *ID, DbgVariableRecord *Source) { in make() argument
1066 "Cannot make an assignment from a non-assign DbgVariableRecord"); in make()
1067 return Assignment(Known, ID, Source); in make()
1069 static Assignment make(DIAssignID *ID, AssignRecord Source) { in make() argument
1070 return Assignment(Known, ID, Source); in make()
1072 static Assignment makeFromMemDef(DIAssignID *ID) { in makeFromMemDef() argument
1073 return Assignment(Known, ID); in makeFromMemDef()
1075 static Assignment makeNoneOrPhi() { return Assignment(NoneOrPhi, nullptr); } in makeNoneOrPhi() argument
1077 Assignment() : Status(NoneOrPhi), ID(nullptr) {} // Can we delete this? in Assignment() argument
1078 Assignment(S Status, DIAssignID *ID) : Status(Status), ID(ID) { in Assignment() function
1079 // If the Status is Known then we expect there to be an assignment ID. in Assignment()
1082 Assignment(S Status, DIAssignID *ID, DbgAssignIntrinsic *Source) in Assignment() function
1084 // If the Status is Known then we expect there to be an assignment ID. in Assignment()
1087 Assignment(S Status, DIAssignID *ID, DbgVariableRecord *Source) in Assignment() function
1089 // If the Status is Known then we expect there to be an assignment ID. in Assignment()
1092 Assignment(S Status, DIAssignID *ID, AssignRecord Source) in Assignment() function
1094 // If the Status is Known then we expect there to be an assignment ID. in Assignment()
1099 using AssignmentMap = SmallVector<Assignment>;
1147 /// Dominating assignment to memory for each variable, indexed by
1153 /// dominating assignment in StackHomeValue (LocKind::Mem), DebugValue
1157 /// Assignment (the class) between whether an assignment is unknown or a
1184 const Assignment &getAssignment(AssignmentKind Kind, VariableID Var) const { in getAssignment()
1201 /// Set the assignment in the \p Kind assignment map for \p Var only: does
1202 /// not set the assignment for VariableIDs of fragments contained win \p
1205 const Assignment &AV) { in setAssignment()
1210 /// Return true if there is an assignment matching \p AV in the \p Kind
1211 /// assignment map. Does consider assignments for VariableIDs of fragments
1214 const Assignment &AV) const { in hasAssignment()
1242 Assignment::makeNoneOrPhi()); in init()
1244 Assignment::makeNoneOrPhi()); in init()
1334 /// (⊤) in this case (unknown location / assignment).
1337 static Assignment joinAssignment(const Assignment &A, const Assignment &B);
1362 /// Add an assignment to memory for the variable /p Var.
1363 void addMemDef(BlockInfo *LiveSet, VariableID Var, const Assignment &AV);
1364 /// Add an assignment to the variable /p Var.
1365 void addDbgDef(BlockInfo *LiveSet, VariableID Var, const Assignment &AV);
1373 /// Return true if \p Var has an assignment in \p M matching \p AV.
1375 VariableID Var, const Assignment &AV);
1428 const Assignment &AV) { in addMemDef()
1434 Assignment FragAV = AV; in addMemDef()
1441 const Assignment &AV) { in addDbgDef()
1447 Assignment FragAV = AV; in addDbgDef()
1467 /// Return true if \p Var has an assignment in \p M matching \p AV.
1470 const Assignment &AV) { in hasVarWithAssignment()
1608 // Interpret stack stores that are not tagged as an assignment in memory for in processUntaggedInstruction()
1614 // prevents us missing an assignment and therefore incorrectly maintaining in processUntaggedInstruction()
1629 // This instruction is treated as both a debug and memory assignment, in processUntaggedInstruction()
1630 // meaning the memory location should be used. We don't have an assignment in processUntaggedInstruction()
1631 // ID though so use Assignment::makeNoneOrPhi() to create an imaginary one. in processUntaggedInstruction()
1632 addMemDef(LiveSet, Var, Assignment::makeNoneOrPhi()); in processUntaggedInstruction()
1633 addDbgDef(LiveSet, Var, Assignment::makeNoneOrPhi()); in processUntaggedInstruction()
1659 // Get DILocation for this unrecorded assignment. in processUntaggedInstruction()
1694 Assignment AV = Assignment::makeFromMemDef(getIDFromInst(I)); in processTaggedInstruction()
1701 // The last assignment to the stack is now AV. Check if the last debug in processTaggedInstruction()
1702 // assignment has a matching Assignment. in processTaggedInstruction()
1730 // There's been an assignment to memory that we were using as a in processTaggedInstruction()
1731 // location for this variable, and the Assignment doesn't match what in processTaggedInstruction()
1733 Assignment DbgAV = LiveSet->getAssignment(BlockInfo::Debug, Var); in processTaggedInstruction()
1734 if (DbgAV.Status == Assignment::NoneOrPhi) { in processTaggedInstruction()
1752 // There's been an assignment to memory and we currently are in processTaggedInstruction()
1774 Assignment AV = Assignment::make(getIDFromMarker(*DbgAssign), DbgAssign); in processDbgAssign()
1782 // Assignment. in processDbgAssign()
1785 // state that an assignment happened here, and we know that specific in processDbgAssign()
1786 // assignment was the last one to take place in memory for this variable. in processDbgAssign()
1800 // The last assignment to the memory location isn't the one that we want in processDbgAssign()
1822 // We have no ID to create an Assignment with so we mark this assignment as in processDbgValue()
1824 // the assignment responsible for setting this value. in processDbgValue()
1828 Assignment AV = Assignment::makeNoneOrPhi(); in processDbgValue()
1972 AssignmentTrackingLowering::Assignment
1973 AssignmentTrackingLowering::joinAssignment(const Assignment &A, in joinAssignment()
1974 const Assignment &B) { in joinAssignment()
1982 return Assignment::makeNoneOrPhi(); in joinAssignment()
1983 if (A.Status == Assignment::NoneOrPhi) in joinAssignment()
1984 return Assignment::makeNoneOrPhi(); in joinAssignment()
1996 // Here the same assignment (!1) was performed in both preds in the source, in joinAssignment()
2017 assert(A.Status == B.Status && A.Status == Assignment::Known); in joinAssignment()
2019 return Assignment::make(A.ID, Source); in joinAssignment()
2192 // Skip this assignment if the affected bits are outside of the in buildOverlapMapAndRecordDeclares()
2331 // Assignment, and the various join methods, which show that all the elements in run()
2853 "Assignment Tracking Analysis", false, true)