akhuang added inline comments.
================ Comment at: clang/include/clang/Basic/Attr.td:1665 + let Spellings = [Clang<"force_debug_if_required_type">]; + let Subjects = SubjectList<[CXXRecord]>; + let Documentation = [Undocumented]; ---------------- dblaikie wrote: > aaron.ballman wrote: > > Does this attribute have effect in C? If so, this should be `Record` > > instead of `CXXRecord`. If not, should this get a `LangOpts` field so the > > attribute is explicitly unused in C? > Seems (at least based on some limited testing I just did) we don't do type > homing in C at all, even the basic "is the type required to be complete" sort > of thing, like this: > ``` > struct s { int i; }; > struct s *g; > ``` > compiled as C, that produces a definition of `s`, compiled as C++ it produces > a declaration of `s` > > (& because I was curious - we don't home enums under these rules (we handle > enums differently anyway - because sometimes they're used as bags of > constants, so we have to preserve their definition even when they're not > referenced through the usual function/variable type links, etc)) Yep, there's a check for `LangOpts.CPlusPlus` before the debug optimizations. Maybe should change it to `Record` anyway, even though it does nothing in C at the moment. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D97411/new/ https://reviews.llvm.org/D97411 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits