Brendon Costa wrote:

> I want to use GCC to categorise "functional purity" in C++. My
> definition will differ from classic functional purity. In particular:
> 
> A function is considered pure if it makes no changes to existing
> memory or program state. There may be a few exceptions to this rule
> such as for new/malloc in that they change program state (allocating
> new memory) but will be manually marked as pure. However free/delete
> should be marked as impure (modifying function parameter, but not
> global state). This means that a function which is pure can create new
> objects/memory and make changes to those new objects, but the existing
> memory must remain unchanged.
> 
> When categorising a functions purity i also would like to identify the
> cause of the impurity. In particular for a function that is impure i
> want to categorise the impurity cause as:
> * modifies global state
> * modifies a function parameter
> * modifies the object state (this is an extension of the function
> parameter on the "this" parameter)
> 
> The reason for posting this is to ask. Is there code in GCC that
> already does something "similar" in say one of the optimisation passes
> so i can get a look at how to get started on this?

This sounds very similar to gimple_has_side_effects ().  Also have a look
at ECF_CONST and ECF_PURE.

Andrew.

Reply via email to