diff options
author | Pierre Langlois <pierre.langlois@arm.com> | 2017-05-05 15:17:25 +0100 |
---|---|---|
committer | Pierre Langlois <pierre.langlois@arm.com> | 2017-05-08 13:24:01 +0100 |
commit | 6c266808812883d690cb944c2763d22c50d116a6 (patch) | |
tree | f6aad8337aba3af78ff3ee9c57d51de0d250f3dd | |
parent | f7bf65575dd402847c15b566c2873d59cbe6ee30 (diff) |
Fix array-bounds warning when compiling with GCC 6
The following code triggers a warning with newer GCC:
~~~
const uint32_t data[] = {0, 1, 2, 3};
uintptr_t ptr = reinterpret_cast<uintptr_t>(data - 1);
~~~
We safely did this in a test, and this test was only enabled for 32-bit
hosts. Fix this by decrementing after the cast.
Change-Id: Ic365598d59d75f86c761e8319aead0ffe2219336
-rw-r--r-- | test/aarch32/test-assembler-aarch32.cc | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/test/aarch32/test-assembler-aarch32.cc b/test/aarch32/test-assembler-aarch32.cc index 01ec44bd..744c07dc 100644 --- a/test/aarch32/test-assembler-aarch32.cc +++ b/test/aarch32/test-assembler-aarch32.cc @@ -5469,12 +5469,10 @@ TEST(ldm_stm_no_writeback) { __ Mov(r0, reinterpret_cast<uintptr_t>(src)); __ Ldm(r0, NO_WRITE_BACK, RegisterList(r1, r2, r3, r4)); - ; __ Ldm(r0, NO_WRITE_BACK, RegisterList(r5, r6, r9, r11)); __ Mov(r0, reinterpret_cast<uintptr_t>(dst1)); __ Stm(r0, NO_WRITE_BACK, RegisterList(r1, r2, r3, r4)); - ; __ Mov(r0, reinterpret_cast<uintptr_t>(dst2)); __ Stm(r0, NO_WRITE_BACK, RegisterList(r5, r6, r9, r11)); @@ -5524,9 +5522,7 @@ TEST(ldm_stm_writeback) { __ Mov(r0, reinterpret_cast<uintptr_t>(src)); __ Ldm(r0, WRITE_BACK, RegisterList(r2, r3)); - ; __ Ldm(r0, WRITE_BACK, RegisterList(r4, r5)); - ; __ Mov(r1, reinterpret_cast<uintptr_t>(dst)); __ Stm(r1, WRITE_BACK, RegisterList(r2, r3, r4, r5)); @@ -5572,7 +5568,7 @@ TEST_A32(ldm_stm_da_ib) { __ Ldmda(r11, WRITE_BACK, RegisterList(r0, r1)); __ Ldmda(r11, NO_WRITE_BACK, RegisterList(r2, r3)); - __ Mov(r10, reinterpret_cast<uintptr_t>(src2 - 1)); + __ Mov(r10, reinterpret_cast<uintptr_t>(src2) - sizeof(src2[0])); __ Ldmib(r10, WRITE_BACK, RegisterList(r4, r5)); __ Ldmib(r10, NO_WRITE_BACK, RegisterList(r6, r7)); @@ -5580,7 +5576,7 @@ TEST_A32(ldm_stm_da_ib) { __ Stmda(r9, WRITE_BACK, RegisterList(r0, r1)); __ Stmda(r9, NO_WRITE_BACK, RegisterList(r2, r3)); - __ Mov(r8, reinterpret_cast<uintptr_t>(dst2 - 1)); + __ Mov(r8, reinterpret_cast<uintptr_t>(dst2) - sizeof(dst2[0])); __ Stmib(r8, WRITE_BACK, RegisterList(r4, r5)); __ Stmib(r8, NO_WRITE_BACK, RegisterList(r6, r7)); |