[Bug middle-end/25724] Emits call to __cmpdi2 for long long comparison in switches
sayle at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon Feb 13 01:55:00 GMT 2006
------- Comment #8 from sayle at gcc dot gnu dot org 2006-02-13 01:55 -------
Subject: Bug 25724
Author: sayle
Date: Mon Feb 13 01:55:37 2006
New Revision: 110906
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110906
Log:
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.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/dojump.c
trunk/gcc/expmed.c
trunk/gcc/expr.h
trunk/gcc/stmt.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25724
More information about the Gcc-bugs
mailing list