aaron.ballman added inline comments.

================
Comment at: clang/lib/CodeGen/CodeGenModule.h:1482
+  void AddGlobalDtor(llvm::Function *Dtor, int Priority = 65535,
+                     bool IsDtorAttrFunc = false);
 
----------------
Xiangling_L wrote:
> aaron.ballman wrote:
> > Xiangling_L wrote:
> > > aaron.ballman wrote:
> > > > There's a fixme comment a few lines up about hardcoding priority being 
> > > > gross and this sort of extends the grossness a bit. Perhaps these 
> > > > functions should accept a `DestructorAttr *`/`ConstructorAttr *` that 
> > > > can be null?
> > > Yeah, I can understand that putting a magic number as 65535 here is 
> > > gross, but a `bool` with default argument also falls into that way? Or 
> > > you are indicating it's better to not use default argument?
> > I think the signature should be:
> > ```
> > void AddGlobalDtor(llvm::Function *Dtor, DestructorAttr *DA = nullptr);
> > ```
> > (I don't have strong opinions about whether the attribute pointer should be 
> > defaulted to null or not.) `IsDtorAttrFunc` is implied by a nonnull pointer 
> > and the priority can be gleaned directly from that attribute (or set to the 
> > magic number if the attribute pointer is null).
> Oh, I see what do you mean here. But the issue is `AddGlobalDtor` is not only 
> used for dtor attribute functions, so we cannot always glean the priority 
> from a `DestructorAttr`.
> 
> If use `DestructorAttr`, the function signature has to be:
> 
> 
> ```
> void AddGlobalDtor(llvm::Function *Dtor, int Priority, DestructorAttr *DA = 
> nullptr);
> ```
> 
> So that's why I think a `bool` is good enough here.
> Oh, I see what do you mean here. But the issue is AddGlobalDtor is not only 
> used for dtor attribute functions, so we cannot always glean the priority 
> from a DestructorAttr.

The only place that calls `AddGlobalDtor()` without an attribute handy is 
`AddCXXStermFinalizerToGlobalDtor()` and the only call to that function always 
passes in the value `65535` (in ItaniumCXXABI.cpp), so passing a null attribute 
pointer there will behave correctly.


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

https://reviews.llvm.org/D90892

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

Reply via email to