[PATCH] D10018: C11 _Bool bitfield diagnostic
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 10 14:42:52 PDT 2015
On Thu, Sep 10, 2015 at 2:17 PM, Rachel Craik <rcraik at ca.ibm.com> wrote:
> rcraik added inline comments.
>
> ================
> Comment at: lib/Sema/SemaDecl.cpp:12586
> @@ -12585,3 +12585,3 @@
> if (!FieldTy->isDependentType()) {
> uint64_t TypeSize = Context.getTypeSize(FieldTy);
> if (Value.getZExtValue() > TypeSize) {
> ----------------
> hubert.reinterpretcast wrote:
> > rsmith wrote:
> > > I think the right way to fix this is to call `getIntWidth` here
> instead of `getTypeSize`, and finesse our error message to clarify that
> we're talking about the width of the type (the number of value bits) rather
> than the size of the type (the number of storage bits).
> > The implementation of `getIntWidth` currently makes this consideration
> moot at this time, but should this extend to C89 (aside from the `_Bool`
> extension)?
> I think we have three options (the special case for _Bool bitfields being
> removed in each case):
> # change `getTypeSize` to `getIntWidth` and leave the rest of the checks
> as-is
> # change `getTypeSize` to `getIntWidth` and update the C/MS diagnostic
> to either `ExtWarn` or `Warning` (for some or all language levels)
> # leave as `getTypeSize` for lower language levels
>
> Opinions?
All of our standard modes are "language standard plus all applicable defect
reports", and the relevant constraint was added by C DR262, so it should
apply in C89 mode too, and we should pick either the first option or the
second option with an `ExtWarn`. (But this is academic, because our C89
mode does not support any integral types with padding bits other than
`_Bool`.)
I have no particular preference between the first and second (`ExtWarn`)
options. This seems like a completely reasonable extension, but we
shouldn't add an extension here unless there's actually some benefit from
doing so (some existing nontrivial codebase relying on bool bitfields with
width > 1).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150910/383431c6/attachment.html>
More information about the cfe-commits
mailing list