From f1ada0dfb2e91f1724a3ebc380c0cc94b72892b8 Mon Sep 17 00:00:00 2001 From: sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 9 Nov 2006 23:48:55 +0000 Subject: [PATCH] * config/ia64/ia64.c (ia64_hpux_init_libfuncs): Use HP-UX millicode routines for integer division. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118632 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/ia64/ia64.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bff4acebe5db..36750a002e42 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-11-09 Steve Ellcey <sje@cup.hp.com> + + * config/ia64/ia64.c (ia64_hpux_init_libfuncs): Use HP-UX millicode + routines for integer division. + 2006-11-09 Daniel Jacobowitz <dan@codesourcery.com> * config/arm/t-linux (LIBGCC2_DEBUG_CFLAGS): Delete. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 418f9a13a8e2..2867e6ff34fb 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -9272,6 +9272,22 @@ ia64_hpux_init_libfuncs (void) { ia64_init_libfuncs (); + /* The HP SI millicode division and mod functions expect DI arguments. + By turning them off completely we avoid using both libgcc and the + non-standard millicode routines and use the HP DI millicode routines + instead. */ + + set_optab_libfunc (sdiv_optab, SImode, 0); + set_optab_libfunc (udiv_optab, SImode, 0); + set_optab_libfunc (smod_optab, SImode, 0); + set_optab_libfunc (umod_optab, SImode, 0); + + set_optab_libfunc (sdiv_optab, DImode, "__milli_divI"); + set_optab_libfunc (udiv_optab, DImode, "__milli_divU"); + set_optab_libfunc (smod_optab, DImode, "__milli_remI"); + set_optab_libfunc (umod_optab, DImode, "__milli_remU"); + + /* HP-UX libc has TF min/max/abs routines in it. */ set_optab_libfunc (smin_optab, TFmode, "_U_Qfmin"); set_optab_libfunc (smax_optab, TFmode, "_U_Qfmax"); set_optab_libfunc (abs_optab, TFmode, "_U_Qfabs"); -- GitLab