I think better here is TREE_OPERAND (*expr_p, 1) = new; - break; + return GS_UNHANDLED; That was my first thought but is it really right to return "unhandled" when something is really being done?