summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/ir_builder.cc
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-11-28 17:22:17 -0800
committer buzbee <buzbee@google.com> 2012-11-28 17:38:24 -0800
commit5f61f678d0b61cda8cac954fb176edbfdb1a831e (patch)
treea508e465a79ee97e00f9a5ff2ab35cd8efb636a6 /src/compiler_llvm/ir_builder.cc
parentbc43860b7e5326264ada842c35a840dd4cda8120 (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