@@ -535,12 +535,14 @@ public JassProg transformProgToJass() {
535535 }
536536
537537 beginPhase (13 , "flatten" );
538- optimizer .removeGarbage ();
538+ boolean garbageChanged = optimizer .removeGarbage ();
539539 imProg .flatten (imTranslator );
540540
541541 // Re-run to avoid #883
542- optimizer .removeGarbage ();
543- imProg .flatten (imTranslator );
542+ if (garbageChanged ) {
543+ optimizer .removeGarbage ();
544+ imProg .flatten (imTranslator );
545+ }
544546
545547 printDebugImProg ("./test-output/im " + stage ++ + "_afterremoveGarbage1.im" );
546548 timeTaker .endPhase ();
@@ -561,7 +563,7 @@ public JassProg transformProgToJass() {
561563 // translate flattened intermediate lang to jass:
562564
563565 beginPhase (14 , "translate to jass" );
564- getImTranslator ().calculateCallRelationsAndUsedVariables ();
566+ getImTranslator ().calculateCallRelationsAndReadVariables ();
565567 ImToJassTranslator translator =
566568 new ImToJassTranslator (getImProg (), getImTranslator ().getCalledFunctions (), getImTranslator ().getMainFunc (), getImTranslator ().getConfFunc ());
567569 prog = translator .translate ();
@@ -952,12 +954,14 @@ public LuaCompilationUnit transformProgToLua() {
952954
953955 printDebugImProg ("./test-output/lua/im " + stage ++ + "_afterlocalopts.im" );
954956
955- optimizer .removeGarbage ();
957+ boolean garbageChanged = optimizer .removeGarbage ();
956958 imProg .flatten (imTranslator );
957959
958960 // Re-run to avoid #883
959- optimizer .removeGarbage ();
960- imProg .flatten (imTranslator );
961+ if (garbageChanged ) {
962+ optimizer .removeGarbage ();
963+ imProg .flatten (imTranslator );
964+ }
961965
962966 printDebugImProg ("./test-output/lua/im " + stage ++ + "_afterremoveGarbage1.im" );
963967
0 commit comments