Attached is a patch fixing a bug that occurs when a contract assertion during constant evaluation invokes a function that has already been invoked (outside the contract assertion) during that constant evaluation --- the already-destroyed result object for the function looks like an attempt to modify code outside the function to the contract assertion evaluation.
A similar code path could probably be constructed where an [[assume]] would be discarded, which is very hard to observe but should also be smoothed out by this patch. Full dg.exp test suite run and compared before and after, x86_64-pc-linux-gnu.
0001-c-contracts-assertion-predicate-re-invoking-constexp.patch
Description: Binary data
