[Bug target/70429] Wrong code with -O1.
kyukhin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 28 14:00:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70429
Kirill Yukhin <kyukhin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kyukhin at gcc dot gnu.org
--- Comment #4 from Kirill Yukhin <kyukhin at gcc dot gnu.org> ---
Seems like combiner performs invalid reassociation. This trivial addition to
Jakub's PR70222 fix makes test work:
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -10526,7 +10526,7 @@ simplify_shift_const_1 (enum rtx_code code,
machine_mode result_mode,
{
/* For ((unsigned) (cstULL >> count)) >> cst2 we have to make
sure the result will be masked. See PR70222. */
- if (code == LSHIFTRT
+ if ((code == LSHIFTRT || code == ASHIFTRT)
&& mode != result_mode
&& !merge_outer_ops (&outer_op, &outer_const, AND,
GET_MODE_MASK (result_mode)
More information about the Gcc-bugs
mailing list