[cfe-dev] Smart pointer usage in the Parser/Actions

Sebastian Redl sebastian.redl at getdesigned.at
Fri Dec 19 08:47:34 PST 2008


steve naroff wrote:
> Folks,
>
> Over the past week or so, there's been some discussion about making  
> extensive use of smart pointers in the parser (on clang-dev).
>
> Since the change is pervasive (and influences the programming model),  
> we discussed the topic yesterday (with Apple compiler engineers  
> working on clang).
>
> We concluded it makes sense to follow-through with the changes.
Great! :-)
>  Our  
> only concern is performance: we don't want to degrade performance of  
> parsing correct code. For example, parsing system headers remains a  
> bottleneck. Since system headers don't contain invalid code, it's  
> important this improvement not degrade performance. Once the change is  
> complete, it's important we do "A/B comparisons" to measure the  
> performance for parsing valid code.
>   
The tricky part about A/B comparisons is that the changes are 
interleaved with other changes, which mask the performance cost of this 
particular change. In many projects, this would be handled by branching 
for the interface change, with updates from trunk being regularly merged 
to the branch, and then comparing performance of trunk and branch. With 
clang's development model, this is not possible; A/B comparisons would 
have to be performed by carefully creating a version with the relevant 
changes removed. However, since the basic groundwork is already in 
trunk, its facilities are being used in other commits, too - see Doug's 
recent template support commit. This changes the separation from a 
difficult task into an impossible one.

Sebastian



More information about the cfe-dev mailing list