diff options
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 6a77f6b..c345786 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -590,6 +590,23 @@ void CodeGenModule::Release() { 1); } + if (Arch == llvm::Triple::aarch64 || Arch == llvm::Triple::aarch64_32 || + Arch == llvm::Triple::aarch64_be) { + getModule().addModuleFlag(llvm::Module::Error, + "branch-target-enforcement", + LangOpts.BranchTargetEnforcement); + + getModule().addModuleFlag(llvm::Module::Error, "sign-return-address", + LangOpts.hasSignReturnAddress()); + + getModule().addModuleFlag(llvm::Module::Error, "sign-return-address-all", + LangOpts.isSignReturnAddressScopeAll()); + + getModule().addModuleFlag(llvm::Module::Error, + "sign-return-address-with-bkey", + !LangOpts.isSignReturnAddressWithAKey()); + } + if (LangOpts.CUDAIsDevice && getTriple().isNVPTX()) { // Indicate whether __nvvm_reflect should be configured to flush denormal // floating point values to 0. (This corresponds to its "__CUDA_FTZ" |