diff options
Diffstat (limited to 'gcc/explow.c')
-rw-r--r-- | gcc/explow.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/explow.c b/gcc/explow.c index 09f786a..6f60b2e 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -707,9 +707,13 @@ force_reg (enum machine_mode mode, rtx x) if (SYMBOL_REF_DECL (s) && DECL_P (SYMBOL_REF_DECL (s))) sa = DECL_ALIGN (SYMBOL_REF_DECL (s)); - ca = exact_log2 (INTVAL (c) & -INTVAL (c)) * BITS_PER_UNIT; - - align = MIN (sa, ca); + if (INTVAL (c) == 0) + align = sa; + else + { + ca = ctz_hwi (INTVAL (c)) * BITS_PER_UNIT; + align = MIN (sa, ca); + } } if (align || (MEM_P (x) && MEM_POINTER (x))) |