Hi, Consider this function: static tree filter (bool (*pred) (const_tree), tree); static tree list_remove (bool (*pred) (const_tree), tree t) { bool opposite (const_tree t) { return !pred (t); } return filter (opposite, t); } Here, the call to ‘filter’ is likely subject to tail-call optimization. Is there any guarantee that ‘opposite’ is still reachable when ‘filter’ is called? Thanks, Ludo’.