re PR middle-end/25724 (Emits call to __cmpdi2 for long long comparison in switches)
authorRoger Sayle <roger@eyesopen.com>
Mon, 13 Feb 2006 01:55:37 +0000 (01:55 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Mon, 13 Feb 2006 01:55:37 +0000 (01:55 +0000)
commitfeb04780354bec2f694f65e7b7a5b20ab07b3c0d
tree3d8ced1bf10347b4692e3a1210b4de3fd48c5e58
parentc0c84a897e862589a0bde45ce884c2d0fb7dda7b
re PR middle-end/25724 (Emits call to __cmpdi2 for long long comparison in switches)

PR middle-end/25724
* dojump.c (do_jump): Call do_compare_rtx_and_jump.
(do_jump_parts_zero_rtx): New function renamed from
do_jump_parts_equality_rtx.  Made static.  Add a mode argument.
(do_jump_parts_equality_rtx): New function split out from
do_jump_parts_equality.  Old implementation renamed as above.
Call do_jump_parts_zero_rtx if either operand is zero.
(do_jump_parts_equality): Call do_jump_parts_equality_rtx to
do all of the heavy lifting.
(do_compare_rtx_and_jump): Handle multi-word comparisons by
calling either do_jump_by_parts_greater_rtx or
do_jump_by_parts_equality_rtx.
* expr.h (do_jump_by_parts_equality_rtx): Remove prototype.
* expmed.c (do_cmp_and_jump): Now multi-word optimization has
moved to do_compare_rtx_and_jump, call it directly.
* stmt.c (do_jump_if_equal): Remove static prototype.  Add a
mode argument.  Call do_compare_rtx_and_jump.
(emit_case_nodes): Update calls to do_jump_if_equal.

From-SVN: r110906
gcc/ChangeLog
gcc/dojump.c
gcc/expmed.c
gcc/expr.h
gcc/stmt.c