necto wrote:

> Does the unstable constraint order only affect Z3 refutation, or did you 
> measure/notice differences in report flakyness even without Z3 refutation? I 
> think it would be great to see the impact of this change, while we eliminate 
> the Z3 from the equation.

I've measured it now, and it seems that it affects the execution flow of issues 
(from 40-80 updated issues to 10-15 out of 80 K). It doesn't seem to have much 
effect on the appearing/disappearing issues (although without Z3 refutation 
there are only ~10 out of 80 K).


> It raises me questions why is the only user of this new field the Constraint 
> manager?
> And if the constraint manager is the only user, why is the SMT-based solver 
> not using this? Should all the other immutableSet/Map benefit from this 
> stability when the key is a SymbolRef?

In an upcoming superceeding PR I generalized it for all structures using 
`ImutContainerInfo`, but SMT-based solver is using this anyway because it uses 
`ConstraintsMap` type that I update in this PR.

> Why can't the default Profile changed for SymExpr to automatically "opt-in" 
> this new ordering for the rest of the foldingset-user datastructures, such as 
> DenseSet/Map too?

`Symbol*::Profile` alone can't help here, you need to use it explicitly in 
`ImutContainerInfo`. However, I failed to implement stable Profile particularly 
because of the `QualType`s used in some of SymExprs: they do not have stable 
`Profile` implementation and rely on pointers. I am hesitant to go there as 
that will be affecting Clang globally and not only CSA.

https://github.com/llvm/llvm-project/pull/121347
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to