Status Update
Comments
ag...@google.com <ag...@google.com> #2
pr...@gmail.com <pr...@gmail.com> #3
ag...@google.com <ag...@google.com> #4
pr...@gmail.com <pr...@gmail.com> #5
mk...@google.com <mk...@google.com> #6
D8 is compiling java to be desugared such that it can run on ART. Desugared output from D8 is never ment to be consumed by a java compiler and dependending on the min-api level (which is an android level api level) it may or may not desugar default methods.
When compiling R8 with a class file output the output is ment to be consumed by a java compiler and R8, I believe, will not consider a min-api. It will assume that the version used for javac compilation is the same for running/addition compilation and will therefore not desugar default methods.
There is no correspondance between min-api and class file versions. If you really want to persue this direction I would recommend using D8 to produce output for an api-level you consider being sufficient for java 7 and then use R8 on it. I believe that should work.
pr...@gmail.com <pr...@gmail.com> #7
I use R8/D8 to produce dex files as output and the dex files will be than compiled with a dex2oat compiler (to use it later on iOS). I use 21 as min api level which should desugar the default methods. This is working when using D8 for producing dex files (see my reproducer). When I now just switch the d8 execution with the r8 execution (+proguard config), the desugaring fails for default methods(see reproducer). Everything else (lambdas, Buffer 9+ Api etc.) will be correctly backported/desugared, the same way just d8 does. Both dex outputs, from d8 and r8 (when no default interface needs to be desugared) leads to a sucessful launch of the app, therefor the general approach is working!
As also the other person analysed, the exception has nothing to do with the java/android classes used in the jar, since the same behavior occures without them. It is only that I can't run r8 on the jar in the reproducer. I would consider this a bug in R8, or am I wrong?
ze...@google.com <ze...@google.com>
ze...@google.com <ze...@google.com> #8
Thank you for the report and for including a reproduction! This is an R8 bug which is subtly caused by having two (or more) keep rules that target an interface method that is defined as a default method on a super-interface. R8 then incorrectly generates multiple bridges. We should have a fix up shortly and I'll post back.
Regarding compiling with java.lang.Object, while R8 does not explicitly support that, there is no reason we should fail on it. I'll update the places that fail based on the reproduction project too.
ap...@google.com <ap...@google.com> #9
Branch: main
commit b14927241155613d1aa8de398494d84fdec68f55
Author: Ian Zerny <zerny@google.com>
Date: Tue Apr 19 14:38:06 2022
Regression test for insertion of multiple interface bridges.
Bug:
Change-Id: I7591d8c02847a8908397a8a7966875b40dcd0fc1
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
A src/test/java/com/android/tools/r8/shaking/interfacebridge/MultipleRulesRegression228791247Test.java
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/utils/DepthFirstTopDownClassHierarchyTraversal.java
ap...@google.com <ap...@google.com> #10
Branch: main
commit f3628f7a1f18b25b04d25342da87985e3e573ee0
Author: Ian Zerny <zerny@google.com>
Date: Wed Apr 20 08:09:32 2022
Maintain canonical interface bridges.
Bug:
Change-Id: I81e2d06133c15a57c0547c66313cc7fdddafe1cc
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
M src/test/java/com/android/tools/r8/shaking/methods/interfaces/MultipleRulesRegression228791247Test.java
ze...@google.com <ze...@google.com> #11
The reproduction in
We need to check the presence of this issue on our release branches so keeping this open until resolved on branches.
ap...@google.com <ap...@google.com> #12
Branch: 3.2
commit d883e9f3f238a0f9c9c9e3ec7ae3edd8be415bf9
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:12:10 2022
Version 3.2.57
Bug:
Change-Id: I134b9f021a6f8d1637d1a79c004ae0aa7a9ae434
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #13
Branch: 3.2
commit bc81e378b114b907afb0f5b75a4aa19421cd8541
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:11:02 2022
Maintain canonical interface bridges.
Bug:
Change-Id: I81e2d06133c15a57c0547c66313cc7fdddafe1cc
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
M src/test/java/com/android/tools/r8/shaking/methods/interfaces/MultipleRulesRegression228791247Test.java
ap...@google.com <ap...@google.com> #14
Branch: 3.2
commit 19a4c33e710e4add60553f40c13afa1070f9bfab
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:08:43 2022
Regression test for insertion of multiple interface bridges.
Bug:
Change-Id: I7591d8c02847a8908397a8a7966875b40dcd0fc1
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
A src/test/java/com/android/tools/r8/shaking/interfacebridge/MultipleRulesRegression228791247Test.java
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/utils/DepthFirstTopDownClassHierarchyTraversal.java
ap...@google.com <ap...@google.com> #15
Branch: 3.1
commit 58b10fa7a87dd760a3a8dab1b9b3467ef0f25c22
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:29:47 2022
Version 3.1.72
Bug:
Change-Id: Ib8e3ff51d53a856b8c9b7cfdbba8a68890f795f2
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #16
Branch: 3.1
commit 7fb677412dfba1863e05eb2a74088ccd22d59942
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:28:35 2022
Maintain canonical interface bridges.
Bug:
Change-Id: I81e2d06133c15a57c0547c66313cc7fdddafe1cc
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
M src/test/java/com/android/tools/r8/shaking/methods/interfaces/MultipleRulesRegression228791247Test.java
ap...@google.com <ap...@google.com> #17
Branch: 3.1
commit e939877e9a6c3c0537e08cddcbef06f87bcdb4b5
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:18:16 2022
Regression test for insertion of multiple interface bridges.
Bug:
Change-Id: I7591d8c02847a8908397a8a7966875b40dcd0fc1
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
A src/test/java/com/android/tools/r8/shaking/interfacebridge/MultipleRulesRegression228791247Test.java
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/utils/DepthFirstTopDownClassHierarchyTraversal.java
ap...@google.com <ap...@google.com> #18
Branch: 3.3
commit 312b16c970407cac05ee598180021714ea5d2e79
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 09:53:58 2022
Version 3.3.30
Bug:
Change-Id: I1ecdd5f31da25ce88c6e6fd4f2240cee3435e814
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #19
Branch: 3.3
commit a93207ef765f5cb22814c5d4d5e0b3b4e7228e2d
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 09:52:07 2022
Maintain canonical interface bridges.
Bug:
Change-Id: I81e2d06133c15a57c0547c66313cc7fdddafe1cc
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
M src/test/java/com/android/tools/r8/shaking/methods/interfaces/MultipleRulesRegression228791247Test.java
ap...@google.com <ap...@google.com> #20
Branch: 3.3
commit e75e0e5696ba55c160fc1fe05d98f28542ee17f4
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 09:06:53 2022
Regression test for insertion of multiple interface bridges.
Bug:
Change-Id: I7591d8c02847a8908397a8a7966875b40dcd0fc1
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
A src/test/java/com/android/tools/r8/shaking/interfacebridge/MultipleRulesRegression228791247Test.java
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/utils/DepthFirstTopDownClassHierarchyTraversal.java
ap...@google.com <ap...@google.com> #21
Branch: 3.2
commit bc81e378b114b907afb0f5b75a4aa19421cd8541
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:11:02 2022
Maintain canonical interface bridges.
Bug:
Change-Id: I81e2d06133c15a57c0547c66313cc7fdddafe1cc
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
M src/test/java/com/android/tools/r8/shaking/methods/interfaces/MultipleRulesRegression228791247Test.java
ap...@google.com <ap...@google.com> #22
Branch: 3.2
commit 19a4c33e710e4add60553f40c13afa1070f9bfab
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 11:08:43 2022
Regression test for insertion of multiple interface bridges.
Bug:
Change-Id: I7591d8c02847a8908397a8a7966875b40dcd0fc1
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
A src/test/java/com/android/tools/r8/shaking/interfacebridge/MultipleRulesRegression228791247Test.java
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/utils/DepthFirstTopDownClassHierarchyTraversal.java
ap...@google.com <ap...@google.com> #23
Branch: 3.3
commit a93207ef765f5cb22814c5d4d5e0b3b4e7228e2d
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 09:52:07 2022
Maintain canonical interface bridges.
Bug:
Change-Id: I81e2d06133c15a57c0547c66313cc7fdddafe1cc
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
M src/test/java/com/android/tools/r8/shaking/methods/interfaces/MultipleRulesRegression228791247Test.java
ap...@google.com <ap...@google.com> #24
Branch: 3.3
commit e75e0e5696ba55c160fc1fe05d98f28542ee17f4
Author: Ian Zerny <zerny@google.com>
Date: Thu Apr 21 09:06:53 2022
Regression test for insertion of multiple interface bridges.
Bug:
Change-Id: I7591d8c02847a8908397a8a7966875b40dcd0fc1
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
A src/test/java/com/android/tools/r8/shaking/interfacebridge/MultipleRulesRegression228791247Test.java
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/utils/DepthFirstTopDownClassHierarchyTraversal.java
pr...@gmail.com <pr...@gmail.com> #25
I wasn't able to test it on a running application of mine yet, because of another issue, but it probably should work fine!
ze...@google.com <ze...@google.com> #26
Thanks for confirming and again for taking the time to report the issue! The fix has now been included on release branches back to 3.1
Description
Description has been deleted.