File tree Expand file tree Collapse file tree 1 file changed +12
-6
lines changed
lib/SILOptimizer/LoopTransforms Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -937,14 +937,20 @@ void LoopTreeOptimization::analyzeCurrentLoop(
937
937
}
938
938
}
939
939
940
- for (auto *AI : ReadOnlyApplies) {
941
- if (!mayWriteTo (AA, BCA, sideEffects, AI)) {
942
- HoistUp.insert (AI);
940
+ // Avoid quadratic complexity in corner cases. Usually, this limit will not be exceeded.
941
+ if (ReadOnlyApplies.size () * sideEffects.size () < 8000 ) {
942
+ for (auto *AI : ReadOnlyApplies) {
943
+ if (!mayWriteTo (AA, BCA, sideEffects, AI)) {
944
+ HoistUp.insert (AI);
945
+ }
943
946
}
944
947
}
945
- for (auto *LI : Loads) {
946
- if (!mayWriteTo (AA, sideEffects, LI)) {
947
- HoistUp.insert (LI);
948
+ // Avoid quadratic complexity in corner cases. Usually, this limit will not be exceeded.
949
+ if (Loads.size () * sideEffects.size () < 8000 ) {
950
+ for (auto *LI : Loads) {
951
+ if (!mayWriteTo (AA, sideEffects, LI)) {
952
+ HoistUp.insert (LI);
953
+ }
948
954
}
949
955
}
950
956
You can’t perform that action at this time.
0 commit comments