aaron.ballman added a comment.

In D133586#3787814 <https://reviews.llvm.org/D133586#3787814>, @rmaz wrote:

> I took a look at writing a test to cover this, but hit the following problem: 
> function qualifiers are only valid on c++ members, and there we cannot create 
> FunctionNoProtoTypes. I couldn't think of a way of testing this by comparing 
> module output that would fail deterministically, as it relies on reusing 
> uninitialized memory that is non-zero.

This is why I'm wondering how we're hitting this problem in the first place. 
C++ shouldn't be able to create a function without a prototype so why does the 
ODR hash matter (do we use that in C and I just wasn't aware of it)?



================
Comment at: clang/include/clang/AST/Type.h:3947
+                     Info) {
+    FunctionTypeBits.FastTypeQuals = 0;
+  }
----------------
It seems a bit odd to me that we only want to initialize one member of the bits 
and none of the rest.


================
Comment at: clang/unittests/AST/DeclTest.cpp:365
+      Code.code(),
+      /*Args=*/{"-target", "i386-apple-darwin", "-x", "objective-c"});
+  ASTContext &Ctx = AST->getASTContext();
----------------
You should also pass `-std=c89` explicitly so that the test continues to work 
when we switch the default language mode to C23 someday in the future.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D133586

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

Reply via email to