diff options
| author | 2012-11-28 17:22:17 -0800 | |
|---|---|---|
| committer | 2012-11-28 17:38:24 -0800 | |
| commit | 5f61f678d0b61cda8cac954fb176edbfdb1a831e (patch) | |
| tree | a508e465a79ee97e00f9a5ff2ab35cd8efb636a6 /src/compiler_llvm/ir_builder.cc | |
| parent | bc43860b7e5326264ada842c35a840dd4cda8120 (diff) | |
Workaround for Issue 7250540
There's a problem (originating with Dalvik's failure to properly type constants) with
Dalvik vregs that are used in both reference and floating point situations. In
particular, if a constant zero is used in a floating point context, the verifier in
some cases will treat it as a null pointer for the purposes generating the GC map.
If that vreg ends up promoted to a floating point value, the run-time value of that
vreg will not be found during garbage collection. As a quick workaround, this
CL causes the compiler to detect this special case of an immediate zero being loaded
into a promoted floating point register and also store a zero in the core/ref identity
of that vreg.
Note, the CL also excludes references from store elimination.
Change-Id: I72f0a96744823ff9c5a2bd961a5e39ac4bbc707b
Diffstat (limited to 'src/compiler_llvm/ir_builder.cc')
0 files changed, 0 insertions, 0 deletions