On Jan 3, 2011, at 10:50 AM, Argyrios Kyrtzidis wrote:

> On Jan 3, 2011, at 10:17 AM, Douglas Gregor wrote:
> 
>> 
>> On Jan 3, 2011, at 9:57 AM, Argyrios Kyrtzidis wrote:
>> 
>>> Author: akirtzidis
>>> Date: Mon Jan  3 11:57:40 2011
>>> New Revision: 122756
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=122756&view=rev
>>> Log:
>>> In the latest episode of "Deserializing bugs caused by accessors" the 
>>> series reached a thrilling climax when
>>> FunctionDecl::setPure crashed a poor user's code.
>>> 
>>> Remove the use of this accessor when deserializing, along with several 
>>> other in the neighborhood. Fixes rdar://8759653.
>> 
>> Can the mutators die, too?
> 
> setPure is needed to call CXXRecordDecl::markedVirtualFunctionPure and update 
> the CXXRecord's DefinitionData.
> Could we have some other scheme for the DefinitionData info without mutating 
> CXXRecord ?


I can't think of any other scheme that isn't the moral equivalent of mutating 
CXXRecord. We want to maintain this bit in DefinitionData. 

I'd like to get the ASTs to a world where the only mutators left are those that 
are actually required either by the language (e.g., adding something to a 
DeclContext) or for performance reasons (e.g., caching the "is this class 
abstract?" bit).

        - Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to