Cleaned up debug variants of libclcore.bc
Bug: 38418449
Bug: 62028512
Bug: 37955136
Two major changes:
(More motivation/explanation/discussion are in the tagged bugs.)
1) Added the fourth variant of libclcore.bc, libclcore_debug_g.bc,
which both gets compiled with -g -O0 and provides runtime range
checking. This is needed for debug context related CTS tests to pass
when they are compiled with flags -g -O0.
2) Removed Element setters and getters defined under RS_G_RUNTIME.
The removed code is neither necessary or correct. After the
RS_G_RUNTIME specific setter/getter implementation was removed,
a bug in the default setter/getter implementation showed up with -O0
compilation as described in Bug 38418449, which caused segfaults
due to mismatch argument type between callers and callees of
rsSetElementAtImpl_<T>() and __rsAllocationVStoreImpl_<T>().
To fix it, I adjusted argument type in rsSetElementAtImpl_<T>() and
__rsAllocationVStoreXImpl_<T> defined in
frameworks/rs/driver/runtime/ll64/allocation.ll to match clang-
generated code from frameworks/rs/driver/runtime/rs_allocation.c.
E.g., char4 was <4 x i8> in ll64/allocation.ll, but was i32 in code
generated by clang. This caused segfaults on calls to the affected
functions in the final arm64-v8a code. short2 and half2 also have the
issue and fix.
Test: CTS on Angler and X86_64:
Test: With tests compiled using -g -O0 and system property
debug.rs.debug set to 1;
Test: With tests compiled using -g -O0;
Test: With tests compiled using the default flags;
Test: With tests compiled using the default flags and system property
debug.rs.debug set to 1.
Test: LLDB tests on X86_64 with no additional failures than those are
known to fail.
Change-Id: I23bd9ab6c7648d2762a77977f08ad3f20e31941c
5 files changed