================
@@ -1103,7 +1103,15 @@ static void InitializePredefinedMacros(const TargetInfo 
&TI,
   assert(TI.getCharWidth() == 8 && "Only support 8-bit char so far");
   Builder.defineMacro("__CHAR_BIT__", Twine(TI.getCharWidth()));
 
-  Builder.defineMacro("__BOOL_WIDTH__", Twine(TI.getBoolWidth()));
+  // The macro is specifying the number of bits in the value representation,
+  // not the number of bits in the object representation, which is what
+  // getBoolWidth() will return. For the bool/_Bool data type, there is only
+  // ever one bit in the value representation. See C23 6.2.6.2p2 for the rules
+  // in C. Note that [basic.fundamental]p10 allows an implementation-defined
----------------
jrtc27 wrote:

Mention C++ before that reference? Obvious for those who know both standards 
and how they're typically referenced, but a bit odd to switch from C to C++ 
without being explicit, and then only mentioning C++ at the end.

https://github.com/llvm/llvm-project/pull/117364
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to