http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57612
Bug ID: 57612 Summary: add builtin to assert that expression does not have side effects Product: gcc Version: unknown Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: tromey at gcc dot gnu.org It would sometimes be useful to be able to assert that an expression does not have side effects. For example, this would be very nice to have for macros which expand their arguments more than once: #define multi_expand(x) __builtin_assert_no_side_effects(x) + (x) Specifically, this builtin would check its argument and give an error if the argument had an assignment or a call to a function which is neither "const" nor "pure". The builtin would evaluate to the value of its argument.