1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-23 10:08:00 +02:00

Fixed stack overflow, optimized DetectLoops

This commit is contained in:
Brian Fiete 2019-10-18 09:13:37 -07:00
parent e2428a11a3
commit 7a27ab75bf
5 changed files with 122 additions and 36 deletions

View file

@ -945,7 +945,9 @@ public:
BeVTrackingList* AllocEmptyList();
BeVTrackingList* AddFiltered(BeVTrackingList* list, SizedArrayImpl<int>& indices, bool perserveChangeList);
BeVTrackingList* AddFiltered(BeVTrackingList* list, int idx, bool perserveChangeList);
BeVTrackingList* Add(BeVTrackingList* list, const SizedArrayImpl<int>& indices, bool perserveChangeList);
BeVTrackingList* Add(BeVTrackingList* list, int idx, bool perserveChangeList);
BeVTrackingList* ClearFiltered(BeVTrackingList* list, const SizedArrayImpl<int>& indices);
BeVTrackingList* Modify(BeVTrackingList* list, const SizedArrayImpl<int>& adds, const SizedArrayImpl<int>& removes, SizedArrayImpl<int>& filteredAdds, SizedArrayImpl<int>& filteredRemoves);
int FindIndex(BeVTrackingList* entry, int val);
@ -978,9 +980,13 @@ public:
BeMCContext* mMCContext;
Array<Node> mNodes;
BfBitSet mBitSet;
public:
BeMCLoopDetector(BeMCContext* context);
void DetectLoops(BeMCBlock* mcBlock, BeVTrackingList* blocksSeen);
void DetectLoops(BeMCBlock* mcBlock);
void DetectLoops();
};
@ -1214,6 +1220,7 @@ public:
DynMemStream& mOut;
bool mDebugging;
bool mFailed;
int mDetectLoopIdx;
BeVTrackingContext mLivenessContext;
BeVTrackingContext mVRegInitializedContext;