summaryrefslogtreecommitdiffstats
path: root/runtime/base
diff options
context:
space:
mode:
authorChih-Hung Hsieh <chh@google.com>2015-01-30 15:37:34 -0800
committerChih-Hung Hsieh <chh@google.com>2015-01-30 15:37:34 -0800
commit1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f (patch)
treebb0ca0614452268d8e0aafb68d2b76972c29d380 /runtime/base
parentab7f56d9b9838811cb01773e45999e2cda4aa03a (diff)
downloadart-1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.tar.gz
art-1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.tar.bz2
art-1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.zip
Disable clang optimization to boot up on arm64.
On arm64 devices, clang compiled lib64/libart.so repeatedly crashes during boot up stage. That prevents a stable adb connection. When optimization of BitVector::NumSetBits is disabled, we can boot up to Android home screen, although some Apps are still unstable. This is a temporary workaround only for clang/llvm arm64 target, to enable concurrent debugging on other bugs. BUG: 19180814 Change-Id: Id82497ce4be0b2c30d36679d15394848d826f50c
Diffstat (limited to 'runtime/base')
-rw-r--r--runtime/base/bit_vector.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/runtime/base/bit_vector.cc b/runtime/base/bit_vector.cc
index 4390180cf2..c3e24a7912 100644
--- a/runtime/base/bit_vector.cc
+++ b/runtime/base/bit_vector.cc
@@ -276,6 +276,10 @@ void BitVector::Copy(const BitVector *src) {
}
}
+#if defined(__clang__) && defined(__ARM_64BIT_STATE)
+// b/19180814 When POPCOUNT is inlined, boot up failed on arm64 devices.
+__attribute__((optnone))
+#endif
uint32_t BitVector::NumSetBits(const uint32_t* storage, uint32_t end) {
uint32_t word_end = WordIndex(end);
uint32_t partial_word_bits = end & 0x1f;