Commit 5bd5034e by Uros Bizjak Committed by Uros Bizjak

Partially revert:

	2012-03-29  Richard Guenther  <rguenther@suse.de>

	* rtl.h (extended_count): Remove.
	* combine.c (extended_count): Remove.

From-SVN: r186077
parent 36504e5f
2012-04-02 Uros Bizjak <ubizjak@gmail.com>
Partially revert:
2012-03-29 Richard Guenther <rguenther@suse.de>
* rtl.h (extended_count): Remove.
* combine.c (extended_count): Remove.
2012-04-02 Dodji Seketeli <dodji@redhat.com>
PR c++/40942
......
......@@ -9674,6 +9674,31 @@ reg_num_sign_bit_copies_for_combine (const_rtx x, enum machine_mode mode,
return NULL;
}
/* Return the number of "extended" bits there are in X, when interpreted
as a quantity in MODE whose signedness is indicated by UNSIGNEDP. For
unsigned quantities, this is the number of high-order zero bits.
For signed quantities, this is the number of copies of the sign bit
minus 1. In both case, this function returns the number of "spare"
bits. For example, if two quantities for which this function returns
at least 1 are added, the addition is known not to overflow.
This function will always return 0 unless called during combine, which
implies that it must be called from a define_split. */
unsigned int
extended_count (const_rtx x, enum machine_mode mode, int unsignedp)
{
if (nonzero_sign_valid == 0)
return 0;
return (unsignedp
? (HWI_COMPUTABLE_MODE_P (mode)
? (unsigned int) (GET_MODE_PRECISION (mode) - 1
- floor_log2 (nonzero_bits (x, mode)))
: 0)
: num_sign_bit_copies (x, mode) - 1);
}
/* This function is called from `simplify_shift_const' to merge two
outer operations. Specifically, we have already found that we need
to perform operation *POP0 with constant *PCONST0 at the outermost
......
......@@ -2455,6 +2455,7 @@ extern bool validate_subreg (enum machine_mode, enum machine_mode,
const_rtx, unsigned int);
/* In combine.c */
extern unsigned int extended_count (const_rtx, enum machine_mode, int);
extern rtx remove_death (unsigned int, rtx);
extern void dump_combine_stats (FILE *);
extern void dump_combine_total_stats (FILE *);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment