Status Update
Comments
ch...@google.com <ch...@google.com>
sg...@google.com <sg...@google.com> #2
I am not sure I understand the use case. how can the benchmark be code to real world scenario when it's not possible to do right now ? which scenario is it ?
In any case, since this would be for benchmarking, this would clearly not be available through the public DSL. We should find a semi-private way of doing this (maybe the private variant API object could offer that functionality for instance or a property).
ap...@google.com <ap...@google.com> #3
We want benchmarks to measure code after Progaurd / R8, but it's not possible to turn that on for androidTests in library modules at the moment (to my knowledge?)
Benchmarks are also a public facing thing, but we have a plugin to help configure gradle builds for our users, so if support for this ends up in a private API, we could try to keep those usages localized to our code perhaps.
hs...@siren.plus <hs...@siren.plus> #4
li...@xiaomi.com <li...@xiaomi.com> #5
this is not part of our OKR at this point so we are not talking soon. at first glance, we would need to simulate usage patterns to minify against and such, this seems substantial amount of work. there are not a lot of library module that have android tests, most only rely on unit-tests.
how important is this ? we are out of PM right now but I suspect the next step will be to negotiate with J. Eason and xav@ to scale a priority level.
sg...@google.com <sg...@google.com> #6
This is a high priority request for Compose, to enable their benchmarks to measure release accurate performance. (Micro) Benchmarks are library modules, as they don't need the complexity of multi-apk tests - they're self measuring APKs that depend on libraries. (d.android.com/benchmark)
there are not a lot of library module that have android tests, most only rely on unit-tests.
To clarify, this is for com.android.library
modules, not jars - I'd expect most of those to use android tests (all of the libraries in jetpack for example do).
we would need to simulate usage patterns to minify against and such, this seems substantial amount of work
Simulate usage patterns? I don't understand - the dev can themselves provide a keep rule for test infra / classes if necessary. Long term, keep rules should be provided by test libraries.
ap...@google.com <ap...@google.com> #7
We've been experimenting with ways to work around this for Compose. Performance results from R8 seem significantly different, and would enable us to measure much more accurately. I've tried to come up with a workaround using a com.android.app module, and while it almost works (and we can get measurements), it's extremely hacky and doesn't let us run tests anymore via Studio:
ap...@google.com <ap...@google.com> #8
Bumping this request, as Compose has recently had more interest in the ability to benchmark with and without R8 enabled.
We're fine if the default implementation doesn't work with minification (tree shaking) - we're happy to supply those rules ourselves, or simply evaluating with minification off to take advantage of other optimizations.
ap...@google.com <ap...@google.com> #9
Juan, this might be something to put on our OKR in the near future, I think you chat with Amanda to set the priority.
ap...@google.com <ap...@google.com> #10
Hey everyone, I am catching up on feature requests and saw this one. I'll schedule time for us to talk about this in a few days.
ap...@google.com <ap...@google.com> #11
Ivan, can you provide a rough estimate on how long this would take ?
ap...@google.com <ap...@google.com> #12
I think this is a duplicate of
My understanding of this feature request is the following:
- As a library author, I'd like to write microbenchmarks in my library subproject that measure performance of my library after it's been processed by R8 [1]
Chris/Dustin, is this correct? If [1] is correct, this is a duplicate of a duplicate of
ap...@google.com <ap...@google.com> #13
As a small correction, it's:
- As a user of microbenchmarks, I'd like to measure performance of code processed by R8
For a bit more context, we generally recommend library and app devs create a completely new, empty library module to add microbenchmarks to, e.g. mylib/src/androidTest/
.
For this reason, we don't particularly care about the minified main library component from the same module.
This librarytest-only focus does have the downside that app devs must pull code into a library to be microbenchmarks, and maybe that could be something improved if there was a good minification story across the test and app module boundary, but that's a separate (but related) concern for the future.
For right now, we care about libraries with empty main directories running R8 on the code in androidTest and its dependencies.
ap...@google.com <ap...@google.com> #14
Thanks for clarifying this. In terms of benchmarking R8-processed library there seem to be two options:
- minify both library and its usages together (in this case they are coming from microbenchmark tests), and collect performance data
- run R8 on the library only, and use non-minified (i.e. public library APIs) from microbenchmark tests to collect performance data; this is captured in
.http://b/263197720
IMO both 1) and 2) are valid use-cases. For 1) you'd like to see how your library behaves given concrete API usages, while 2) tests library "full-surface".
Could 1) also be modelled with an application that depends on the library, uses some APIs, and then microbenchmark tests from its androidTest are doing the profiling?
ap...@google.com <ap...@google.com> #15
For 1) you'd like to see how your library behaves given concrete API usages,
Yes, this is it exactly. We want 1, assuming that it means all of the library dependencies of the benchmark and it's androidTest code would be run through R8 together.
As there's no content in my-benchmark/src/
, I don't think 2 helps our issue.
Could 1) also be modelled with an application that depends on the library, uses some APIs, and then microbenchmark tests from its androidTest are doing the profiling?
We experimented with this years ago when we started the project, it could work conceptually, but the issue is that the androidTest dir build wasn't factored into the tree shaking step, so every test had to be accompanied by manual keep rules/annotations to the code it invodes. I'd be fine having to specify keep rules for JUnit and @Test methods, but if we wanted libraries to be minified, they had to be in the app, and the benchmark had to cross that test/apk boundary constantly.
Another option we explored was declaring each test twice (as a @Keep
function in src/
and wrapper in androidTest/
so Studio could see/run the test method). which technically worked, but was similarly cumbersome.
ap...@google.com <ap...@google.com> #16
I think I have all requirements right now.
- library androidTest: there is a single APK AGP produces, and this would allow you to run R8 on both androidTest code and its runtime classpath (which includes all of its dependencies&main). Every class from your tests would be an entry point. Also, when
main
component of the library is processed with R8, we'd apply its mapping file. - application androidTest: we produce 2 APKs, so R8 runs on androidTest code and its runtime classpath (includes only its dependencies, and all duplicate libraries from main are removed). Every class from your tests would be an entry point. Also, when
main
component of the application is processed with R8, we'd apply its mapping file.
Is this a correct summary? If so, we can de-duplicate?
P.S. Related to issues with taking test usages into account when running R8 on application code, this is
ap...@google.com <ap...@google.com> #17
Yes, thanks, duping against
ap...@google.com <ap...@google.com> #18
IIUC, for library androidTest, we are going to run R8 for its program code(e.g. my-benchmark/src/
suppose it is not empty) together with androidTest code and other dependencies, right?
If so, I think
enable it on the test apk for libraries. I do not want progaurd to run on the library itself, however.
which seems to suggest the program code should not be minified.
ap...@google.com <ap...@google.com> #19
I do not want progaurd to run on the library itself, however.
My reading of this statement on that bug is that they don't want the library's .aar or .jar to be minified (as part of the actual library build), but they DO want the library minified as part of the library test build, which is why I agreed with the duping suggestion.
From a later comment, comment13:
The original comment is pretty clear that it's for libraries which do not want to run R8 on their main code but want to on their test APK to validate things like the embedded rules.
Testing embedded rules implies that the .aar/.jar from the library won't be minifed, but they want to test an environment where the library is minified when embedded in an apk, via the tests.
ap...@google.com <ap...@google.com> #20
Thanks for the insights, Chris. Can you also clarify what are the embedded rules? keep rules shipped with the library?
ap...@google.com <ap...@google.com> #21
Yes, rules shipped with the library.
ap...@google.com <ap...@google.com> #22
When it comes to introducing the new dsl, we are considering making it more specific, rather than using "minify". So I would love to confirm with you what you want r8 to do. e.g. codeShrinking, obfuscation?
ap...@google.com <ap...@google.com> #23
We want all of the r8 functionality, since we want to be able to mirror the behavior in apps (either for correctness testing or for performance testing).
My suggestion would be for library test configuration to match app DSL, for consistently and simplicity. As things change in the app r8 dsl, we could have the library r8 dsl mirror it (e.g.
ap...@google.com <ap...@google.com> #24
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Extend ArrayConstructionSimplifier dominance checks
Expand for full commit details
Extend ArrayConstructionSimplifier dominance checks
Fixes: b/391417819
Change-Id: Id31f2463d9255415d33ce43bcafd9e794c550a49
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 8742667733c823ce28496032566dd67b61c77b93
Date: Thu Jan 23 08:32:53 2025
ap...@google.com <ap...@google.com> #25
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: cf6351164bfa81c0825804a298a2002427703bb8
Date: Thu Jan 23 08:32:43 2025
ap...@google.com <ap...@google.com> #26
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Minimize reproduction for
Expand for full commit details
Minimize reproduction for b/391417819
Bug: b/391417819
Change-Id: I65a9c2427b41f2075305c1383f9dd44c0f580433
Files:
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 9306278ddfbe67c7fe3a81446148a245db8a096b
Date: Thu Jan 23 08:32:49 2025
ap...@google.com <ap...@google.com> #27
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Remove use of instruction pointers in ArrayConstructionSimplifier
Expand for full commit details
Remove use of instruction pointers in ArrayConstructionSimplifier
Bug: b/391417819
Change-Id: Ibac54efa132e841a66158f5b150686583b6ce263
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
Hash: 204fa090ccb00a76f35f6a2bce300fc202488f0b
Date: Thu Jan 23 12:17:26 2025
ap...@google.com <ap...@google.com> #28
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Version 8.7.30
Expand for full commit details
Version 8.7.30
Bug: b/391417819
Change-Id: I2a4fb56c095f6f6e38c83784f48b67aae1eea125
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: fa99a3957d69b100e0b171b27b7e561704767d0a
Date: Thu Jan 23 12:17:35 2025
ap...@google.com <ap...@google.com> #29
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Remove use of instruction pointers in ArrayConstructionSimplifier
Expand for full commit details
Remove use of instruction pointers in ArrayConstructionSimplifier
Bug: b/391417819
Change-Id: I3b2c63f92ab7c715c0ee34c47a11ea4a9a031cd6
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
Hash: be6d116a901e6de654b4ab8bf819090110cc435d
Date: Thu Jan 23 12:14:33 2025
ap...@google.com <ap...@google.com> #30
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Version 8.8.29
Expand for full commit details
Version 8.8.29
Bug: b/391417819
Change-Id: Idf84855740cd4d85578087e5af12e15f2d3c34b1
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: 2db4212c6c2bdce2c9d7de18c0bee2287676fad4
Date: Thu Jan 23 12:15:28 2025
ap...@google.com <ap...@google.com> #31
Project: r8
Branch: main
Author: Andrew Grieve <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 6a196b767d07351dc7727d805df3de5f6e55bb95
Date: Tue Jan 28 09:45:13 2025
ap...@google.com <ap...@google.com> #32
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Minimize reproduction for
Expand for full commit details
Minimize reproduction for b/391417819
Bug: b/391417819
Change-Id: I65a9c2427b41f2075305c1383f9dd44c0f580433
Files:
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 19c63ff0edfb19a43225f4e71a2040773ff61dde
Date: Thu Jan 23 08:34:02 2025
ap...@google.com <ap...@google.com> #33
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Extend ArrayConstructionSimplifier dominance checks
Expand for full commit details
Extend ArrayConstructionSimplifier dominance checks
Fixes: b/391417819
Change-Id: Id31f2463d9255415d33ce43bcafd9e794c550a49
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ef2d79417694eb4d4015b88217079e7078608546
Date: Thu Jan 23 08:34:07 2025
ap...@google.com <ap...@google.com> #34
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 057e709d6d58cc612be0c1454528a64f4e520afb
Date: Thu Jan 23 08:33:57 2025
ap...@google.com <ap...@google.com> #35
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Minimize reproduction for
Expand for full commit details
Minimize reproduction for b/391417819
Bug: b/391417819
Change-Id: I65a9c2427b41f2075305c1383f9dd44c0f580433
Files:
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ddeceac56e5f69ba399d452143f7e0ad846e463a
Date: Thu Jan 23 08:35:14 2025
ap...@google.com <ap...@google.com> #36
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Extend ArrayConstructionSimplifier dominance checks
Expand for full commit details
Extend ArrayConstructionSimplifier dominance checks
Fixes: b/391417819
Change-Id: Id31f2463d9255415d33ce43bcafd9e794c550a49
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ad1db321daef6d551838790b37ab31839b13d4a6
Date: Thu Jan 23 08:35:19 2025
ap...@google.com <ap...@google.com> #37
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 2d41ee40de5da2ea80734d60733b431b2082a4cc
Date: Thu Jan 23 08:35:09 2025
ap...@google.com <ap...@google.com> #38
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a9d0cc5fb40101e32f13da8163d296d9151078cc
Date: Wed Feb 05 14:22:37 2025
ap...@google.com <ap...@google.com> #39
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Version 8.8.30
Expand for full commit details
Version 8.8.30
Bug: b/391417819
Change-Id: I966d3ceddba2f0ee0817f7551440745dec6590d2
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: c27beef20ae9bfd4c6a3a0aa5b6bca529459894d
Date: Wed Feb 05 14:22:47 2025
ap...@google.com <ap...@google.com> #40
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Version 8.7.31
Expand for full commit details
Version 8.7.31
Bug: b/391417819
Change-Id: I596f4c4d86000f39b5bd392c4ad82f290c26ba4c
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: c3b0d4ada556a59928e0c15c3382966bfab65bb5
Date: Wed Feb 05 14:25:48 2025
ap...@google.com <ap...@google.com> #41
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: e15d7557ead42a62f051a3d377dbf2c194080c1e
Date: Wed Feb 05 14:25:39 2025
ap...@google.com <ap...@google.com> #42
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Version 8.9.24
Expand for full commit details
Version 8.9.24
Bug: b/391417819
Change-Id: Ibef5197ce6514a49e36908efe5a363ced62a4707
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: cb856f7819c1c4d9f18c8cb5912cba0d133b923f
Date: Wed Feb 05 14:21:33 2025
ap...@google.com <ap...@google.com> #43
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 0214496fecdceca1a0730153ece5d9f5f7f6ba0d
Date: Wed Feb 05 14:21:08 2025
ap...@google.com <ap...@google.com> #44
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 6463499b7bfc8b408daf1e403b8cfc707825d04f
Date: Wed Feb 05 14:28:58 2025
ap...@google.com <ap...@google.com> #45
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Version 8.5.51
Expand for full commit details
Version 8.5.51
Bug: b/391417819
Change-Id: I0059527e0cea91383204efe6d1e656551fc423e2
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: 9aaf485a55ea66ce7a09748986b799272208af09
Date: Wed Feb 05 14:29:06 2025
ap...@google.com <ap...@google.com> #46
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Version 8.6.40
Expand for full commit details
Version 8.6.40
Bug: b/391417819
Change-Id: Ia0da9c64c03523fd9f7a335c818acb074ee69e35
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: dce31b8fd345ee2720a300394764cea8d2a8cded
Date: Wed Feb 05 14:28:32 2025
ap...@google.com <ap...@google.com> #47
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a50126864f7ebb15091207741df2b229653b3804
Date: Wed Feb 05 14:28:22 2025
ap...@google.com <ap...@google.com> #48
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Minimize reproduction for
Expand for full commit details
Minimize reproduction for b/391417819
Bug: b/391417819
Change-Id: I65a9c2427b41f2075305c1383f9dd44c0f580433
Files:
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 19c63ff0edfb19a43225f4e71a2040773ff61dde
Date: Thu Jan 23 08:34:02 2025
ap...@google.com <ap...@google.com> #49
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Extend ArrayConstructionSimplifier dominance checks
Expand for full commit details
Extend ArrayConstructionSimplifier dominance checks
Fixes: b/391417819
Change-Id: Id31f2463d9255415d33ce43bcafd9e794c550a49
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ef2d79417694eb4d4015b88217079e7078608546
Date: Thu Jan 23 08:34:07 2025
ap...@google.com <ap...@google.com> #50
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 057e709d6d58cc612be0c1454528a64f4e520afb
Date: Thu Jan 23 08:33:57 2025
ap...@google.com <ap...@google.com> #51
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a9d0cc5fb40101e32f13da8163d296d9151078cc
Date: Wed Feb 05 14:22:37 2025
ap...@google.com <ap...@google.com> #52
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: e15d7557ead42a62f051a3d377dbf2c194080c1e
Date: Wed Feb 05 14:25:39 2025
ap...@google.com <ap...@google.com> #53
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 0214496fecdceca1a0730153ece5d9f5f7f6ba0d
Date: Wed Feb 05 14:21:08 2025
ap...@google.com <ap...@google.com> #54
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 6463499b7bfc8b408daf1e403b8cfc707825d04f
Date: Wed Feb 05 14:28:58 2025
ap...@google.com <ap...@google.com> #55
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a9d0cc5fb40101e32f13da8163d296d9151078cc
Date: Wed Feb 05 14:22:37 2025
ap...@google.com <ap...@google.com> #56
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: e15d7557ead42a62f051a3d377dbf2c194080c1e
Date: Wed Feb 05 14:25:39 2025
ap...@google.com <ap...@google.com> #57
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 0214496fecdceca1a0730153ece5d9f5f7f6ba0d
Date: Wed Feb 05 14:21:08 2025
an...@google.com <an...@google.com> #58
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Meerkat | 2024.3.1 RC 2
- Android Gradle Plugin 8.9.0-rc02
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
an...@google.com <an...@google.com> #59
The fixes for this issue are now also available in:
- Android Studio Ladybug Feature Drop | 2024.2.2 Patch 2
- Android Gradle Plugin 8.8.2
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Description
Hi there,
The issue continues to happen for us even with AGP 8.7.3. I am attaching the source code and smali output here.
java.lang.VerifyError: Verifier rejected class com.example.r8.R8Test: byte[] com.example.r8.R8Test.toBytes(boolean) failed to verify: byte[] com.example.r8.R8Test.toBytes(boolean): [0x28] unexpected value in v0 of type Undefined but expected Byte for put (declaration of 'com.example.r8.R8Test' appears in /data/app/~~xxxxx/base.apk)
We believe this should be a bug that only occurs in a specific scenario.
Source code as follows:
smail output as follws:
From the above smail output, it can be seen that the code byte[] bytes = new byte[3]; was optimized away, resulting in a verifyError.