Do not clobber reserved register X18
X18 is now a reserved register for Android. Explicit clobbering of this
register causes compile error in Clang 8.0.
Test: m checkbuild
Bug: 111759196
Change-Id: Icecba52c31b3fbb100aaed5f18a28fa4e27a7028
diff --git a/runtime/arch/stub_test.cc b/runtime/arch/stub_test.cc
index 0cc5535..c9774a7 100644
--- a/runtime/arch/stub_test.cc
+++ b/runtime/arch/stub_test.cc
@@ -309,12 +309,13 @@
// Use the result from r0
: [arg0] "0"(arg0), [arg1] "r"(arg1), [arg2] "r"(arg2), [code] "r"(code), [self] "r"(self),
[referrer] "r"(referrer), [hidden] "r"(hidden), [fpr_result] "m" (fpr_result)
+ // X18 is a reserved register, cannot be clobbered.
// Leave one register unclobbered, which is needed for compiling with
// -fstack-protector-strong. According to AAPCS64 registers x9-x15 are caller-saved,
// which means we should unclobber one of the callee-saved registers that are unused.
// Here we use x20.
// http://b/72613441, Clang 7.0 asks for one more register, so we do not reserve x21.
- : "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "x19",
+ : "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19",
"x22", "x23", "x24", "x25", "x26", "x27", "x28", "x30",
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
"d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15",