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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-01-10
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The difference is where the cleanup_point in the IR is located.

Working non template case:

        if (ANNOTATE_EXPR <<<cleanup_point (size_t) x < Vector::count ((const
struct Vector *) r)>>, ivdep>) (void) 0; else goto <D.17225>;

vs

Non-Working template case:
        if (<<cleanup_point ANNOTATE_EXPR <(size_t) x < VectorT<float>::count
((const struct VectorT *) r), ivdep>>>) (void) 0; else goto <D.17488>;


Confirmed.

Reply via email to