http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58950

--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> ---
For __builtin_shuffle, the issue is that we now call save_expr, which always
sets TREE_SIDE_EFFECTS to 1. I don't know if it would make sense to introduce a
maybe_save_expr that is equivalent to save_expr but does not set
TREE_SIDE_EFFECTS if its argument doesn't have it. But in any case I think we
still want to warn for an unused result in __builtin_shuffle(x,++m) so that's
not the solution. In C we also have the side_effects_flag but we still warn in
warn_if_unused_value (the default for unknown trees), whereas in C++ (near the
end of convert_to_void in cvt.c) only some tcc_comparison, tcc_unary and
tcc_binary can warn when they have side effects. It would be easy to add
VEC_PERM_EXPR to the list and get a "value computed is not used", I just don't
know if something more general is possible.

For (i+i), the PLUS_EXPR ends up with nowarning_flag = 1 somehow.

Reply via email to