danielkiss added inline comments.

================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:5149-5152
+          if (BPI.BranchTargetEnforcement)
+            Fn->addFnAttr("branch-target-enforcement", "true");
+          else
+            Fn->addFnAttr("branch-target-enforcement", "false");
----------------
tamas.petz wrote:
> chill wrote:
> > danielkiss wrote:
> > > I'm going to rebase the patch. I add there a new attribute here 
> > > "ignore-branch-target-enforcement"
> > > so then the "branch-target-enforcement"="true"/"false" could be just 
> > > "branch-target-enforcement".
> > > 
> > > 
> > TBH, that's worse, IMHO.
> > 
> > Ideally, I *think* we'd like *every* LLVM IR function that the backend sees,
> > regardless of how, why and by whom it is created, to have (or not have)
> > the three existing PACBTI attributes "sign-return-address", 
> > "sign-return-address-key", and "branch-target-enforcement", so the backend 
> > can generate code accordingly.
> > 
> > The module attributes are LLVM IR metadata,  and  AFAIK LLVM IR metadata is 
> > an optional extra, 
> > it should not affect correctness.
> > Indeed, *module* metadata is a somwhat grey area,  better not use it if 
> > there a way around it.
> > 
> > 
> > 
> Which case are you trying to handle here?
> Is this the case, for example, when -mbranch-protection=standard is set but a 
> function has _attribute _((target("branch-protection=none")))?
Chill: I think I have code that solve that for clang created functions, but 
functions created in llvm I don't have any idea. 

Tamas: yes, that is the case when module is compiled with bti but the function 
is not ( "none" or "pac-ret" and so on. )


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

https://reviews.llvm.org/D75181



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to