[cfe-commits] r158288 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ include/clang/Sema/ lib/AST/ lib/CodeGen/ lib/Parse/ lib/Rewrite/ lib/Sema/ lib/Serialization/ test/PCH/ test/SemaTemplate/
Richard Smith
richard at metafoo.co.uk
Mon Jul 2 11:35:09 PDT 2012
On Mon, Jul 2, 2012 at 1:20 AM, Enea Zaffanella <zaffanella at cs.unipr.it>wrote:
> Hello Richard.
>
> The commit below has removed a couple of FieldDecl public methods
> (setBitWidth and removeBitWidth) that are used in one of our applications.
> I understand that you removed them because they are unused in the clang
> sources, thereby looking useless, so the questions are:
>
> 1) OK to reintroduce them? (we need to modify some AST nodes in place and
> one of the changes has to do with bitfield size expressions)
>
We generally try to keep the AST immutable, but I appreciate this is a
regression for you, so I think it's OK to add these back. I do wonder if
there's another way of approaching your use case that would remove the need
for these mutators, such as creating a new FieldDecl rather than modifying
the existing one. I assume you're aware that changing the bitwidth can have
a non-trivial effect on the semantic properties of expressions which use
the bitfield (so you probably shouldn't do this if you already have
expressions referencing the field).
> 2) is there any convention for flagging this kind of "unused" methods as
> "used", so as to avoid future removals?
>
Not that I know of. A comment would be useful.
On 06/10/2012 05:12 AM, Richard Smith wrote:
>
>> Author: rsmith
>> Date: Sat Jun 9 22:12:00 2012
>> New Revision: 158288
>>
>> URL: http://llvm.org/viewvc/llvm-**project?rev=158288&view=rev<http://llvm.org/viewvc/llvm-project?rev=158288&view=rev>
>> Log:
>> PR13064: Store whether an in-class initializer uses direct or copy
>> initialization, and use that information to produce the right kind of
>> initialization during template instantiation.
>>
>
> [...]
>
>
> - void setBitWidth(Expr *BW) {
>> - assert(!InitializerOrBitWidth.**getPointer() &&
>> - "bit width or initializer already set");
>> - InitializerOrBitWidth.**setPointer(BW);
>> - InitializerOrBitWidth.setInt(**1);
>> - }
>> - /// removeBitWidth - Remove the bitfield width from this member.
>> - void removeBitWidth() {
>> - assert(isBitField() && "no bit width to remove");
>> - InitializerOrBitWidth.**setPointer(0);
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120702/70cf2750/attachment.html>
More information about the cfe-commits
mailing list