diff options
author | Chih-Hung Hsieh <chh@google.com> | 2015-01-30 15:37:34 -0800 |
---|---|---|
committer | Chih-Hung Hsieh <chh@google.com> | 2015-01-30 15:37:34 -0800 |
commit | 1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f (patch) | |
tree | bb0ca0614452268d8e0aafb68d2b76972c29d380 | |
parent | ab7f56d9b9838811cb01773e45999e2cda4aa03a (diff) | |
download | art-1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.zip art-1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.tar.gz art-1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.tar.bz2 |
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
-rw-r--r-- | runtime/base/bit_vector.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/runtime/base/bit_vector.cc b/runtime/base/bit_vector.cc index 4390180..c3e24a7 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; |