sdesmalen added a comment.

In D126642#3547284 <https://reviews.llvm.org/D126642#3547284>, @erichkeane 
wrote:

> I'm not sure I'm grokking hte difference between the ExtraBitfields and 
> ExtParamInfos here.

The reason I repurposed the bit was because I previously tried adding a bit to 
`unsigned ExtInfo : 13;` but that fails

  static_assert(sizeof(*this) <= 8 + sizeof(ExtQualsTypeCommonBase), "changing 
bitfields changed sizeof(Type)!");

so perhaps incorrectly I assumed I couldn't add any new bits to FunctionType 
and thought I'd repurpose this one bit, because it's only ever used for 
FunctionProtoType (never for FunctionNoProtoType).

But I now realised I can just add an extra bit, so that we can leave this bit 
as-is. What do you think?



================
Comment at: clang/include/clang/AST/Type.h:4103
   bool hasExtraBitfields() const {
-    return hasExtraBitfields(getExceptionSpecType());
+    assert((getExceptionSpecType() != EST_Dynamic ||
+            FunctionTypeBits.HasExtraBitfields) &&
----------------
erichkeane wrote:
> Why is asking if we DO have extra bitfields an assert here?  I would think 
> this is a valid question...
> 
> Why would 'dynamic' and extra-bitfields be exclusive here?
This assert is merely confirming that HasExtraBitfields **must** be true if the 
ExceptionSpecType is `EST_Dynamic`, because that was the old behaviour (and I 
wanted to avoid introducing failures if some code still assumed that 
hasExtraBitfields == true, but for some reason HasExtraBitfields had not yet 
been set to `true`).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126642

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

Reply via email to