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.

Attachment: 0001-c-contracts-assertion-predicate-re-invoking-constexp.patch
Description: Binary data

Reply via email to