[cfe-commits] r78450 - in /cfe/trunk: include/clang/AST/Expr.h include/clang/AST/Stmt.h lib/AST/Stmt.cpp lib/Frontend/PCHReaderStmt.cpp lib/Sema/Sema.h lib/Sema/SemaTemplateInstantiateDecl.cpp lib/Sema/SemaTemplateInstantiateExpr.cpp

Douglas Gregor dgregor at apple.com
Wed Aug 19 23:57:32 PDT 2009


On Aug 19, 2009, at 11:42 PM, Chris Lattner wrote:

> On Aug 7, 2009, at 6:41 PM, Douglas Gregor wrote:
>> URL: http://llvm.org/viewvc/llvm-project?rev=78450&view=rev
>> Log:
>> Introduce reference counting for statements and expressions, using it
>> to allow sharing of nodes. Simplifies some aspects of template
>> instantiation, and fixes both PR3444 and <rdar://problem/6757457>.
>
> Yay for progress :)
>
>> +  /// \brief The statement class.
>> +  const unsigned sClass : 8;
>> +
>> +  /// \brief The reference count for this statement.
>> +  unsigned RefCount : 24;
>
> Random thought, do you ever expect to need more than 65536 ref  
> counts?  If not, shrinking the refcount to be an unsigned short  
> would lead to slightly more efficient generated code for some  
> operations.

It's possible that a given template could get instantiated more than  
65535 times in some crazy template metaprograms, which would cause a  
reference count of > 65535 for non-dependent expressions that occur in  
the template's definition. We're probably stuck with a 24-bit ref count.

	- Doug



More information about the cfe-commits mailing list