Richi has asked the we break the wide-int patch so that the individual port and front end maintainers can review their parts without have to go through the entire patch. This patch covers the bfin port.
Ok?
* config/bfin/bfin.c (bfin_local_alignment): Use wide-int interfaces. (bfin_can_use_doloop_p): Likewise. diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index d7af939..88fe426 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -3288,8 +3288,8 @@ bfin_local_alignment (tree type, unsigned align) memcpy can use 32 bit loads/stores. */ if (TYPE_SIZE (type) && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST - && (TREE_INT_CST_LOW (TYPE_SIZE (type)) > 8 - || TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 32) + && wi::gtu_p (TYPE_SIZE (type), 8) + && align < 32) return 32; return align; } @@ -3371,15 +3371,14 @@ find_prev_insn_start (rtx insn) /* Implement TARGET_CAN_USE_DOLOOP_P. */ static bool -bfin_can_use_doloop_p (double_int, double_int iterations_max, +bfin_can_use_doloop_p (const widest_int &, const widest_int &iterations_max, unsigned int, bool) { /* Due to limitations in the hardware (an initial loop count of 0 does not loop 2^32 times) we must avoid to generate a hardware loops when we cannot rule out this case. */ if (!flag_unsafe_loop_optimizations - && (iterations_max.high != 0 - || iterations_max.low >= 0xFFFFFFFF)) + && wi::geu_p (iterations_max, 0xFFFFFFFF)) return false; return true; }