Allow invalid CF accessflags for chanu app dump

Bug: 172535996
Change-Id: I4c7993c8d3e04cb3f339ea4286f605d7c54dd575
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index 455f03a..97ef2dc 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -183,7 +183,10 @@
         clazz.accessFlags.setSuper();
       }
     }
-    int access = clazz.accessFlags.getAsCfAccessFlags();
+    int access =
+        options.testing.allowInvalidCfAccessFlags
+            ? clazz.accessFlags.materialize()
+            : clazz.accessFlags.getAsCfAccessFlags();
     if (clazz.isDeprecated()) {
       access = AsmUtils.withDeprecated(access);
     }
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 69b964d..520f04a 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1346,6 +1346,8 @@
     public boolean forceIRForCfToCfDesugar =
         System.getProperty("com.android.tools.r8.forceIRForCfToCfDesugar") != null;
     public boolean disableMappingToOriginalProgramVerification = false;
+    public boolean allowInvalidCfAccessFlags =
+        System.getProperty("com.android.tools.r8.allowInvalidCfAccessFlags") != null;
 
     // Flag to allow processing of resources in D8. A data resource consumer still needs to be
     // specified.
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 797019b..4c57722 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -272,6 +272,8 @@
       cmd.append('-ea')
     if args.printtimes:
       cmd.append('-Dcom.android.tools.r8.printtimes=1')
+    if hasattr(args, 'properties'):
+      cmd.extend(args.properties);
     cmd.extend(['-cp', '%s:%s' % (wrapper_dir, jar)])
     if compiler == 'd8':
       cmd.append('com.android.tools.r8.D8')
diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py
index 93123e0..23e5aef 100755
--- a/tools/run_on_app_dump.py
+++ b/tools/run_on_app_dump.py
@@ -47,6 +47,7 @@
       'revision': None,
       'folder': None,
       'skip_recompilation': False,
+      'compiler_properties': [],
     }
     # This below does not work in python3
     defaults.update(fields.items())
@@ -111,8 +112,9 @@
     'url': 'https://github.com/mkj-gram/chanu.git',
     'revision': '6e53458f167b6d78398da60c20fd0da01a232617',
     'folder': 'chanu',
-    # TODO(b/172535996): Fix recompilation
-    'skip_recompilation': True
+    # The app depends on a class file that has access flags interface but
+    # not abstract
+    'compiler_properties': ['-Dcom.android.tools.r8.allowInvalidCfAccessFlags=true']
   }),
   # TODO(b/172539375): Monkey runner fails on recompilation.
   App({
@@ -543,6 +545,7 @@
     'program_jar': prev_recomp_jar,
     'nolib': not is_minified_r8(shrinker),
     'config_file_consumer': remove_print_lines,
+    'properties': app.compiler_properties,
   })
 
   app_jar = os.path.join(