https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120395

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This isn't actually related to the builtin, we get the same thing for any
always_inline function that returns a constant:

void x(int);

[[gnu::always_inline]]
inline bool always_true() { return true; }

struct Iter
{
    typedef int value_type;

    int& operator*() const;
    Iter& operator++();
    bool operator!=(const Iter&) const;
};

void f(Iter first, Iter last)
{
    if (__is_trivial(Iter::value_type))
        if (always_true())
            return;

    // unreachable dead code!
    for (; first != last; ++first)
        x(*first);
}

So there's probably a dup of this.

Reply via email to