[Bug tree-optimization/94403] Missed optimization bswap
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 30 16:40:30 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94403
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|other |tree-optimization
Last reconfirmed| |2020-03-30
Ever confirmed|0 |1
CC| |jakub at gcc dot gnu.org
Resolution|DUPLICATE |---
Status|RESOLVED |REOPENED
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I don't see how it is similar except that it is about bswap detection.
Your comment is weird, because bswap is detected for int32_t and not for
int64_t, while the comment suggests otherwise.
And the reason this is optimized for int32_t only is that the loop is
completely unrolled in that case, but not for int64_t, where cunrolli punts on
it even with -O2 -funroll-loops or -O3.
And, the std::byte issue is unrelated to that.
--- gcc/gimple-ssa-store-merging.c.jj 2020-03-20 09:33:03.602112329 +0100
+++ gcc/gimple-ssa-store-merging.c 2020-03-30 18:30:31.723341519 +0200
@@ -315,7 +315,8 @@ verify_symbolic_number_p (struct symboli
lhs_type = gimple_expr_type (stmt);
- if (TREE_CODE (lhs_type) != INTEGER_TYPE)
+ if (TREE_CODE (lhs_type) != INTEGER_TYPE
+ && TREE_CODE (lhs_type) != ENUMERAL_TYPE)
return false;
if (TYPE_PRECISION (lhs_type) != TYPE_PRECISION (n->type))
can fix that one.
More information about the Gcc-bugs
mailing list