Resolve flakiness of Art800 test
Bug: 116282409
Change-Id: I94471bbd8ca7f7619b8cefcf2ab46326380b09ac
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 2f40a77..6436654 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -538,10 +538,10 @@
static RuntimeException unwrapExecutionException(ExecutionException executionException) {
Throwable cause = executionException.getCause();
- if (cause instanceof CompilationError) {
+ if (cause instanceof Error) {
// add original exception as suppressed exception to provide the original stack trace
cause.addSuppressed(executionException);
- throw (CompilationError) cause;
+ throw (Error) cause;
} else if (cause instanceof RuntimeException) {
cause.addSuppressed(executionException);
throw (RuntimeException) cause;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/CallGraph.java b/src/main/java/com/android/tools/r8/ir/conversion/CallGraph.java
index 524de92..7b9ce55 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/CallGraph.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/CallGraph.java
@@ -232,8 +232,7 @@
});
Set<DexEncodedMethod> methods =
leaves.stream().map(x -> x.method).collect(Collectors.toCollection(LinkedHashSet::new));
- // TODO(b/116282409): Resolve why shuffling makes art.none.r8.Art800_smaliTest flaky.
- return methods;
+ return shuffle.order(methods);
}
public static class CycleEliminator {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index d855e0e..deac5eb 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -2225,7 +2225,7 @@
throw new CompilationError(
"Undefined value encountered during compilation. "
+ "This is typically caused by invalid dex input that uses a register "
- + "that is not define on all control-flow paths leading to the use.");
+ + "that is not defined on all control-flow paths leading to the use.");
}
if (block.entry() instanceof MoveException) {
// TODO: Should we support joining in the presence of move-exception instructions?
diff --git a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
index 1ff2664..d77adfd 100644
--- a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
@@ -64,6 +64,8 @@
throw reporter.fatalError(e);
} catch (ResourceException e) {
throw reporter.fatalError(new ExceptionDiagnostic(e, e.getOrigin()));
+ } catch (AssertionError e) {
+ throw reporter.fatalError(new ExceptionDiagnostic(e, Origin.unknown()));
}
reporter.failIfPendingErrors();
} catch (AbortException e) {