Only do *&ex -> ex optimisation if there is no type punning involved
Merge pull request #3662 from ibuclaw/fix12900

Only do *&ex -> ex optimisation if there is no type punning involved
Remove virtual keyword.

It was added in GitHub pull request #2895, but since fell
into disfavor compared to a more general way of negating
storage classes.
[Refactoring] Separate test case for issue 3882 and relates
Merge pull request #3663 from klickverbot/remove-virtual

Remove virtual keyword.
[Refactoring] TypeFunction::purityLevel
fix Issue 12909 - [AA] Function is incorrectly inferred as strongly pure for associative array with key of non-mutable array or pointer as argument
fix Issue 12910 - [AA] `rehash` is incorrectly inferred as strongly pure for some associative arrays
Merge pull request #3667 from 9rnsr/fix12909

Issue 12909 & 12910 - fix purity level calculation for AA parameter
fix Issue 12900 - Wrong code in IfStatement condition Expression