[Bug tree-optimization/63202] tree vectorizer does not make use of alignment information from VRP/CCP

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Sep 8 07:36:00 GMT 2014


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I guess the cast prevents this from being handled by maybe_set_nonzero_bits,
guess it could be handled there.

That said, it is extremely fragile, because we insert the range and non-zero
bits info on SSA_NAMEs and have this single exception for function parameters
if they aren't used anywhere before the __builtin_unreachable check.  As soon
as e.g. the function is inlined, there might be more uses and the info can be
lost.
Richard didn't want to disable forward propagation if some SSA_NAME holds a
useful range info which the to be propagated SSA_NAME does not hold (in that
case, we'd keep a new SSA_NAME with the more precise range/non-zero info around
and be able to stick it somewhere).
The reason why we have __builtin_assume_aligned defined the way it is is that
there is always an SSA_NAME to stick that info to, it is clear in which part of
the function the condition is true.



More information about the Gcc-bugs mailing list