Assert that we do not process IR code twice in debug mode

Bug: 158728582
Bug: 158818229
Change-Id: I7c9e6f4a12b0e724b95f9ec8e2a2537b56147a36
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 35760b4..c53b686 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -741,14 +741,17 @@
       enumUnboxer.finishAnalysis();
       enumUnboxer.unboxEnums(postMethodProcessorBuilder, executorService, feedback);
     }
-    new TrivialFieldAccessReprocessor(appView.withLiveness(), postMethodProcessorBuilder)
-        .run(executorService, feedback, timing);
+    if (!options.debug) {
+      new TrivialFieldAccessReprocessor(appView.withLiveness(), postMethodProcessorBuilder)
+          .run(executorService, feedback, timing);
+    }
 
     timing.begin("IR conversion phase 2");
     graphLenseForIR = appView.graphLense();
     PostMethodProcessor postMethodProcessor =
         postMethodProcessorBuilder.build(appView.withLiveness(), executorService, timing);
     if (postMethodProcessor != null) {
+      assert !options.debug;
       postMethodProcessor.forEachWave(feedback, executorService);
       feedback.updateVisibleOptimizationInfo();
       assert graphLenseForIR == appView.graphLense();
@@ -1193,6 +1196,10 @@
     }
 
     if (method.isProcessed()) {
+      // We loose locals information when processing dex code, so if in debug mode only process
+      // synthesized methods.
+      // TODO(b/158818229): Check if the synthesized check is needed.
+      assert !isDebugMode || method.isD8R8Synthesized();
       assert !appView.enableWholeProgramOptimizations()
           || !appView.appInfo().withLiveness().neverReprocess.contains(method.method);
     } else {