Made art/runtime/arch/stub_test.cc compile with -O2 again.
The test file art/runtime/arch/stub_test.cc wasn't compiling with -O2 as the optimisations interacted with -fstack-protector-strong. The aarch64 _asm_ block in the Invoke3WithReferrerAndHidden function was clobbering all possible registers, and clang requires at least one register to be live across an _asm_ block to do the checking. The fix was to remove a callee-saved register, x20, from the clobber list of the aarch64 asm block of Invoke3WithReferrerAndHidden. The block was also modified to save and restore x20 to ensure that it won't be clobbered by the stubs invoked by the blr instruction. Also added some comments above the clobber list. Change-Id: I03597fd2d14cf2d6e32edf02835aee2eb68bab17
Loading
Please sign in to comment