https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122992
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #29 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Xi Ruoyao from comment #25)
> I made up something to detect such an subtly invalid use of
> EXECUTE_IF_SET_IN_HARD_REG_SET:
>
> diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
> index df56a3acedb..d5af9bbc281 100644
> --- a/gcc/hard-reg-set.h
> +++ b/gcc/hard-reg-set.h
> @@ -401,10 +401,18 @@ hard_reg_set_iter_next (hard_reg_set_iterator *iter,
> unsigned *)
> iter->bits &= ~ HARD_CONST (1);
> }
>
> +template <typename T>
> +inline void
> +build_error_for_rvalue (T &&)
> +{
> + static_assert(!std::is_rvalue_reference<T&&>::value);
space before (! and , "" before ); is needed, we need C++14 compatibility.