chill added inline comments.

================
Comment at: clang/lib/Basic/Targets/ARM.cpp:391-392
 
+  if (!Arch.empty() && !isBranchProtectionSupportedArch(Arch))
+    return false;
+
----------------
amilendra wrote:
> chill wrote:
> > On empty `Arch` it'd continue down the function, but we'd like to return 
> > failure.
> I am having trouble getting the test `arm-branch-protection-attr-1.c` to work 
> after these changes. `validateBranchProtection()` checks the combination of 
> two parameters, the branch protection attribute and architecture.
> If the architecture is empty, like below, shouldn't the function to continue 
> checking further than simply returning false? 
> ```
> __attribute__((target("branch-protection=bti"))) void btionly() {}
> ```
> Or should I be using something else other than 
> `CGM.getTarget().getTargetOpts().CPU` to get the architecture in 
> `ARMTargetCodeGenInfo::setTargetAttributes`?
> 
We shouldn't be getting an empty `Arch`, or rather we should definitely know 
what we are generating code for.
If that cannot be reliably obtained via wherever the `Arch` parameter comes 
from, maybe we could instead check
target features (`TargetOptions::Features`).  It's conceptually //more 
correct// too, even though in this particular instance
it probably does not matter much.

As a general note too, I think it'd be better to check for when PACBTI-M 
instructions (NOP or not) are definitely *not* available
as architecture names where they are is likely to change with time.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D115501/new/

https://reviews.llvm.org/D115501

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D115501: [c... Momchil Velikov via Phabricator via cfe-commits

Reply via email to