Version 2.1.34 Cherry pick: Account for unordered mapped positions in LineNumberOptimizer CL: https://r8-review.googlesource.com/51803 Bug: 157758209 Change-Id: I842dcd3bc9ed01fadd68a93f3127fb6d298c77c6
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java index ea79264..84acd31 100644 --- a/src/main/java/com/android/tools/r8/Version.java +++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@ // This field is accessed from release scripts using simple pattern matching. // Therefore, changing this field could break our release scripts. - public static final String LABEL = "2.1.33"; + public static final String LABEL = "2.1.34"; private Version() { }
diff --git a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java index a785262b..e1572f5 100644 --- a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java +++ b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
@@ -408,7 +408,14 @@ || !Objects.equals(mp.caller, lastPosition.caller)) { break; } - lastPosition = mp; + // The mapped positions are not guaranteed to be in order, so maintain first and last + // position. + if (firstPosition.obfuscatedLine > mp.obfuscatedLine) { + firstPosition = mp; + } + if (lastPosition.obfuscatedLine < mp.obfuscatedLine) { + lastPosition = mp; + } } Range obfuscatedRange = new Range(firstPosition.obfuscatedLine, lastPosition.obfuscatedLine);