[PATCH] D145999: [RISCV] Reserve X18 by default for Android

Aditya Kumar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 13 16:03:48 PDT 2023


hiraditya created this revision.
hiraditya added reviewers: enh, asb.
Herald added subscribers: jobnoorman, luke, VincentWu, abrachet, danielkiss, vkmr, frasercrmck, evandro, phosek, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, arichardson.
Herald added a project: All.
hiraditya requested review of this revision.
Herald added subscribers: llvm-commits, cfe-commits, pcwang-thead, eopXD, MaskRay.
Herald added projects: clang, LLVM.

Reserve X18 even when -fsanitize=shadow-call-stack is not enabled.

Based on: https://reviews.llvm.org/D143355


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D145999

Files:
  clang/test/Driver/riscv-fixed-x-register.c
  llvm/lib/TargetParser/RISCVTargetParser.cpp
  llvm/test/CodeGen/RISCV/reserved-regs.ll


Index: llvm/test/CodeGen/RISCV/reserved-regs.ll
===================================================================
--- llvm/test/CodeGen/RISCV/reserved-regs.ll
+++ llvm/test/CodeGen/RISCV/reserved-regs.ll
@@ -58,6 +58,7 @@
 ; RUN: llc -mtriple=riscv64 -mattr=+reserve-x31 -verify-machineinstrs < %s | FileCheck %s -check-prefix=X31
 
 ; RUN: llc -mtriple=riscv64-fuchsia -verify-machineinstrs < %s | FileCheck %s -check-prefix=X18
+; RUN: llc -mtriple=riscv64-linux-android -verify-machineinstrs < %s | FileCheck %s -check-prefix=X18
 
 ; This program is free to use all registers, but needs a stack pointer for
 ; spill values, so do not test for reserving the stack pointer.
Index: llvm/lib/TargetParser/RISCVTargetParser.cpp
===================================================================
--- llvm/lib/TargetParser/RISCVTargetParser.cpp
+++ llvm/lib/TargetParser/RISCVTargetParser.cpp
@@ -103,7 +103,7 @@
 
 bool isX18ReservedByDefault(const Triple &TT) {
   // X18 is reserved for the ShadowCallStack ABI (even when not enabled).
-  return TT.isOSFuchsia();
+  return TT.isOSFuchsia() || TT.isAndroid();
 }
 
 } // namespace RISCV
Index: clang/test/Driver/riscv-fixed-x-register.c
===================================================================
--- clang/test/Driver/riscv-fixed-x-register.c
+++ clang/test/Driver/riscv-fixed-x-register.c
@@ -339,3 +339,8 @@
 // RUN: --check-prefix=CHECK-FIXED-X30 \
 // RUN: --check-prefix=CHECK-FIXED-X31 \
 // RUN: < %t %s
+
+// Check that x18 is reserved on Android by default
+// RUN: %clang --target=riscv64-linux-android -### %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-ANDROID-FIXED-X18 < %t %s
+// CHECK-ANDROID-FIXED-X18: "-target-feature" "+reserve-x18"


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D145999.504880.patch
Type: text/x-patch
Size: 1717 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230313/a28920d7/attachment.bin>


More information about the llvm-commits mailing list