code refine
authorRoy <lryer@msn.com>
Mon, 2 Sep 2019 09:07:39 +0000 (17:07 +0800)
committerRoy <lryer@msn.com>
Mon, 2 Sep 2019 09:07:39 +0000 (17:07 +0800)
Reduce the number of cycles.

glslang/MachineIndependent/iomapper.cpp

index 26b830e4f91a694ba2327355b992c6aae3d51edc..3262c0a20307458449449caa74a91e3ff5bb5c48 100644 (file)
@@ -1035,7 +1035,9 @@ struct TDefaultHlslIoResolver : public TDefaultIoResolverBase {
 bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) {
     bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() ||
                          intermediate.getAutoMapLocations();
-    for (int res = 0; res < EResCount; ++res) {
+    // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce
+    // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true.
+    for (int res = 0; (res < EResCount && !somethingToDo); ++res) {
         somethingToDo = somethingToDo || (intermediate.getShiftBinding(TResourceType(res)) != 0) ||
                         intermediate.hasShiftBindingForSet(TResourceType(res));
     }
@@ -1134,7 +1136,9 @@ bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TIn
 
     bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() ||
                          intermediate.getAutoMapLocations();
-    for (int res = 0; res < EResCount; ++res) {
+    // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce
+    // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true.
+    for (int res = 0; (res < EResCount && !somethingToDo); ++res) {
         somethingToDo = somethingToDo || (intermediate.getShiftBinding(TResourceType(res)) != 0) ||
                         intermediate.hasShiftBindingForSet(TResourceType(res));
     }