Skip to content

Commit 42132c2

Browse files
committed
[Clang][RISCV] Add function attribute in RISC-V specific code
1 parent 7dc168a commit 42132c2

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

clang/lib/CodeGen/CodeGenFunction.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -899,11 +899,6 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
899899
if (CodeGenOpts.PointerAuth.IndirectGotos)
900900
Fn->addFnAttr("ptrauth-indirect-gotos");
901901

902-
// Add return control flow integrity attributes for RISCV.
903-
if (CodeGenOpts.CFProtectionReturn &&
904-
getContext().getTargetInfo().getTriple().isRISCV())
905-
Fn->addFnAttr("hw-shadow-stack");
906-
907902
// Apply xray attributes to the function (as a string, for now)
908903
bool AlwaysXRayAttr = false;
909904
if (const auto *XRayAttr = D ? D->getAttr<XRayInstrumentAttr>() : nullptr) {

clang/lib/CodeGen/Targets/RISCV.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,11 @@ class RISCVTargetCodeGenInfo : public TargetCodeGenInfo {
594594
const auto *FD = dyn_cast_or_null<FunctionDecl>(D);
595595
if (!FD) return;
596596

597+
auto *Fn = cast<llvm::Function>(GV);
598+
599+
if (CGM.getCodeGenOpts().CFProtectionReturn)
600+
Fn->addFnAttr("hw-shadow-stack");
601+
597602
const auto *Attr = FD->getAttr<RISCVInterruptAttr>();
598603
if (!Attr)
599604
return;
@@ -604,8 +609,6 @@ class RISCVTargetCodeGenInfo : public TargetCodeGenInfo {
604609
case RISCVInterruptAttr::machine: Kind = "machine"; break;
605610
}
606611

607-
auto *Fn = cast<llvm::Function>(GV);
608-
609612
Fn->addFnAttr("interrupt", Kind);
610613
}
611614
};

0 commit comments

Comments
 (0)