rjmccall added inline comments.

================
Comment at: clang/include/clang/Basic/LangOptions.h:394
+     return true;
+  }
+
----------------
rjmccall wrote:
> erichkeane wrote:
> > rjmccall wrote:
> > > The problem with having both functions that take `ASTContext`s and 
> > > functions that don't is that it's easy to mix them, so they either need 
> > > to have the same behavior (in which case it's pointless to have an 
> > > overload that takes the `ASTContext`) or you're making something really 
> > > error-prone.
> > > 
> > > I would feel a lot more confident that you were designing and using these 
> > > APIs correctly if you actually took advantage of the ability to not store 
> > > trailing FPOptions in some case, like when they match the global settings 
> > > in the ASTContext.  That way you'll actually be verifying that everything 
> > > behaves correctly if nodes don't store FPOptions.  If you do that, I 
> > > think you'll see my point about not having all these easily-confusable 
> > > functions that do or do not take `ASTContext`s..
> > I think I disagree with @rjmccall that these requiresTrailingStorage should 
> > be here at all.  I think we should store in the AST ANY programmer opinion, 
> > even if they match the global setting.  It seems to me that this would be 
> > more tolerant of any global-setting rewrites that modules/et-al introduce, 
> > as well as make the AST Print consistent.  Always storing FPOptions when 
> > the user has explicitly overriding it also better captures the programmer's 
> > intent.
> I covered this elsewhere in the review.  If you want to have that tolerance — 
> and I think you should — then expressions should store (and Sema should 
> track) the active pragma state, which can be most easily expressed as a pair 
> of an FPOptions and a mask to apply to the global FPOptions.  When you enter 
> a pragma, you clear the relevant bits from the global FPOptions mask.
> 
> But the whole point of putting this stuff in trailing storage is so that you 
> can make FPOptions as big as you need without actually inflating the AST size 
> for a million nodes that don't care in the slightest about FPOptions.
> But the whole point of putting this stuff in trailing storage is so that you 
> can make FPOptions as big as you need without actually inflating the AST size 
> for a million nodes that don't care in the slightest about FPOptions.

I meant to say: for a million nodes that don't care in the slightest about 
FPOptions, as well as for a million more nodes that aren't using pragma 
overrides.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D76384



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

Reply via email to