From d6583d40c819f3a1faa2a9a784cac7755a4b6875 Mon Sep 17 00:00:00 2001 From: mmitchel Date: Thu, 19 Aug 2004 22:24:56 +0000 Subject: [PATCH] * defaults.h (TARGET_LIBGCC_LIBFUNCS): Remove. * optabs.c (init_optabs): Don't check it. * config/arm/bpabi.h (TARGET_LIBGCC_LIBFUNCS): Do not define. * doc/tm.texi (TARGET_LIBGCC_FUNCS): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86285 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++ gcc/config/arm/bpabi.h | 4 -- gcc/defaults.h | 6 --- gcc/doc/tm.texi | 8 --- gcc/optabs.c | 143 ++++++++++++++++++++++++------------------------- 5 files changed, 77 insertions(+), 91 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 025d70e..5b4668e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-08-19 Mark Mitchell + + * defaults.h (TARGET_LIBGCC_LIBFUNCS): Remove. + * optabs.c (init_optabs): Don't check it. + * config/arm/bpabi.h (TARGET_LIBGCC_LIBFUNCS): Do not define. + * doc/tm.texi (TARGET_LIBGCC_FUNCS): Remove. + 2004-08-18 Andreas Krebbel * config/s390/s390.md (s390_warn_framesize_string) diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index b8776f8..815ac30 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -33,10 +33,6 @@ calling convention. */ #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) TARGET_BPABI -/* Do not generate calls to any of the standard GCC functions in - libgcc when generating BPABI code. */ -#define TARGET_LIBGCC_LIBFUNCS !TARGET_BPABI - /* The BPABI integer comparision routines return { -1, 0, 1 }. */ #define TARGET_LIB_INT_CMP_BIASED !TARGET_BPABI diff --git a/gcc/defaults.h b/gcc/defaults.h index 82fce20..b7d393d 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -627,12 +627,6 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) false #endif -/* True if the target should use the standard libgcc arithmetic - library functions, like __addsi3 and _fixdfdi. */ -#ifndef TARGET_LIBGCC_LIBFUNCS -#define TARGET_LIBGCC_LIBFUNCS (true) -#endif - /* True if the targets integer-comparision fucntions return { 0, 1, 2 } to indicate { <, ==, > }. False if { -1, 0, 1 } is used instead. The libgcc routines are biased. */ diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index f357436..2f99cef 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -4765,14 +4765,6 @@ comparison operators, so the default returns false always. Most ports don't need to define this macro. @end defmac -@defmac TARGET_LIBGCC_FUNCS -This macro should evaluate to @code{true} if the standard GCC library -names (like @code{__modsi3}) should be used for functions provided in -@file{libgcc.a}. If this macro evaluates to @code{false}, then the -target must explictily set the names of all desired library functions -itself using the @code{TARGET_INIT_LIBFUNCS} hook. -@end defmac - @defmac TARGET_LIB_INT_CMP_BIASED This macro should evaluate to @code{true} if the integer comparison functions (like @code{__cmpdi2}) return 0 to indicate that the first diff --git a/gcc/optabs.c b/gcc/optabs.c index 42f714b..0e8bb31 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -5483,79 +5483,76 @@ init_optabs (void) init_all_optabs (); /* Initialize the optabs with the names of the library functions. */ - if (TARGET_LIBGCC_LIBFUNCS) - { - init_integral_libfuncs (add_optab, "add", '3'); - init_floating_libfuncs (add_optab, "add", '3'); - init_integral_libfuncs (addv_optab, "addv", '3'); - init_floating_libfuncs (addv_optab, "add", '3'); - init_integral_libfuncs (sub_optab, "sub", '3'); - init_floating_libfuncs (sub_optab, "sub", '3'); - init_integral_libfuncs (subv_optab, "subv", '3'); - init_floating_libfuncs (subv_optab, "sub", '3'); - init_integral_libfuncs (smul_optab, "mul", '3'); - init_floating_libfuncs (smul_optab, "mul", '3'); - init_integral_libfuncs (smulv_optab, "mulv", '3'); - init_floating_libfuncs (smulv_optab, "mul", '3'); - init_integral_libfuncs (sdiv_optab, "div", '3'); - init_floating_libfuncs (sdiv_optab, "div", '3'); - init_integral_libfuncs (sdivv_optab, "divv", '3'); - init_integral_libfuncs (udiv_optab, "udiv", '3'); - init_integral_libfuncs (sdivmod_optab, "divmod", '4'); - init_integral_libfuncs (udivmod_optab, "udivmod", '4'); - init_integral_libfuncs (smod_optab, "mod", '3'); - init_integral_libfuncs (umod_optab, "umod", '3'); - init_floating_libfuncs (ftrunc_optab, "ftrunc", '2'); - init_integral_libfuncs (and_optab, "and", '3'); - init_integral_libfuncs (ior_optab, "ior", '3'); - init_integral_libfuncs (xor_optab, "xor", '3'); - init_integral_libfuncs (ashl_optab, "ashl", '3'); - init_integral_libfuncs (ashr_optab, "ashr", '3'); - init_integral_libfuncs (lshr_optab, "lshr", '3'); - init_integral_libfuncs (smin_optab, "min", '3'); - init_floating_libfuncs (smin_optab, "min", '3'); - init_integral_libfuncs (smax_optab, "max", '3'); - init_floating_libfuncs (smax_optab, "max", '3'); - init_integral_libfuncs (umin_optab, "umin", '3'); - init_integral_libfuncs (umax_optab, "umax", '3'); - init_integral_libfuncs (neg_optab, "neg", '2'); - init_floating_libfuncs (neg_optab, "neg", '2'); - init_integral_libfuncs (negv_optab, "negv", '2'); - init_floating_libfuncs (negv_optab, "neg", '2'); - init_integral_libfuncs (one_cmpl_optab, "one_cmpl", '2'); - init_integral_libfuncs (ffs_optab, "ffs", '2'); - init_integral_libfuncs (clz_optab, "clz", '2'); - init_integral_libfuncs (ctz_optab, "ctz", '2'); - init_integral_libfuncs (popcount_optab, "popcount", '2'); - init_integral_libfuncs (parity_optab, "parity", '2'); - - /* Comparison libcalls for integers MUST come in pairs, - signed/unsigned. */ - init_integral_libfuncs (cmp_optab, "cmp", '2'); - init_integral_libfuncs (ucmp_optab, "ucmp", '2'); - init_floating_libfuncs (cmp_optab, "cmp", '2'); - - /* EQ etc are floating point only. */ - init_floating_libfuncs (eq_optab, "eq", '2'); - init_floating_libfuncs (ne_optab, "ne", '2'); - init_floating_libfuncs (gt_optab, "gt", '2'); - init_floating_libfuncs (ge_optab, "ge", '2'); - init_floating_libfuncs (lt_optab, "lt", '2'); - init_floating_libfuncs (le_optab, "le", '2'); - init_floating_libfuncs (unord_optab, "unord", '2'); - - /* Conversions. */ - init_interclass_conv_libfuncs (sfloat_optab, "float", - MODE_INT, MODE_FLOAT); - init_interclass_conv_libfuncs (sfix_optab, "fix", - MODE_FLOAT, MODE_INT); - init_interclass_conv_libfuncs (ufix_optab, "fixuns", - MODE_FLOAT, MODE_INT); - - /* sext_optab is also used for FLOAT_EXTEND. */ - init_intraclass_conv_libfuncs (sext_optab, "extend", MODE_FLOAT, true); - init_intraclass_conv_libfuncs (trunc_optab, "trunc", MODE_FLOAT, false); - } + init_integral_libfuncs (add_optab, "add", '3'); + init_floating_libfuncs (add_optab, "add", '3'); + init_integral_libfuncs (addv_optab, "addv", '3'); + init_floating_libfuncs (addv_optab, "add", '3'); + init_integral_libfuncs (sub_optab, "sub", '3'); + init_floating_libfuncs (sub_optab, "sub", '3'); + init_integral_libfuncs (subv_optab, "subv", '3'); + init_floating_libfuncs (subv_optab, "sub", '3'); + init_integral_libfuncs (smul_optab, "mul", '3'); + init_floating_libfuncs (smul_optab, "mul", '3'); + init_integral_libfuncs (smulv_optab, "mulv", '3'); + init_floating_libfuncs (smulv_optab, "mul", '3'); + init_integral_libfuncs (sdiv_optab, "div", '3'); + init_floating_libfuncs (sdiv_optab, "div", '3'); + init_integral_libfuncs (sdivv_optab, "divv", '3'); + init_integral_libfuncs (udiv_optab, "udiv", '3'); + init_integral_libfuncs (sdivmod_optab, "divmod", '4'); + init_integral_libfuncs (udivmod_optab, "udivmod", '4'); + init_integral_libfuncs (smod_optab, "mod", '3'); + init_integral_libfuncs (umod_optab, "umod", '3'); + init_floating_libfuncs (ftrunc_optab, "ftrunc", '2'); + init_integral_libfuncs (and_optab, "and", '3'); + init_integral_libfuncs (ior_optab, "ior", '3'); + init_integral_libfuncs (xor_optab, "xor", '3'); + init_integral_libfuncs (ashl_optab, "ashl", '3'); + init_integral_libfuncs (ashr_optab, "ashr", '3'); + init_integral_libfuncs (lshr_optab, "lshr", '3'); + init_integral_libfuncs (smin_optab, "min", '3'); + init_floating_libfuncs (smin_optab, "min", '3'); + init_integral_libfuncs (smax_optab, "max", '3'); + init_floating_libfuncs (smax_optab, "max", '3'); + init_integral_libfuncs (umin_optab, "umin", '3'); + init_integral_libfuncs (umax_optab, "umax", '3'); + init_integral_libfuncs (neg_optab, "neg", '2'); + init_floating_libfuncs (neg_optab, "neg", '2'); + init_integral_libfuncs (negv_optab, "negv", '2'); + init_floating_libfuncs (negv_optab, "neg", '2'); + init_integral_libfuncs (one_cmpl_optab, "one_cmpl", '2'); + init_integral_libfuncs (ffs_optab, "ffs", '2'); + init_integral_libfuncs (clz_optab, "clz", '2'); + init_integral_libfuncs (ctz_optab, "ctz", '2'); + init_integral_libfuncs (popcount_optab, "popcount", '2'); + init_integral_libfuncs (parity_optab, "parity", '2'); + + /* Comparison libcalls for integers MUST come in pairs, + signed/unsigned. */ + init_integral_libfuncs (cmp_optab, "cmp", '2'); + init_integral_libfuncs (ucmp_optab, "ucmp", '2'); + init_floating_libfuncs (cmp_optab, "cmp", '2'); + + /* EQ etc are floating point only. */ + init_floating_libfuncs (eq_optab, "eq", '2'); + init_floating_libfuncs (ne_optab, "ne", '2'); + init_floating_libfuncs (gt_optab, "gt", '2'); + init_floating_libfuncs (ge_optab, "ge", '2'); + init_floating_libfuncs (lt_optab, "lt", '2'); + init_floating_libfuncs (le_optab, "le", '2'); + init_floating_libfuncs (unord_optab, "unord", '2'); + + /* Conversions. */ + init_interclass_conv_libfuncs (sfloat_optab, "float", + MODE_INT, MODE_FLOAT); + init_interclass_conv_libfuncs (sfix_optab, "fix", + MODE_FLOAT, MODE_INT); + init_interclass_conv_libfuncs (ufix_optab, "fixuns", + MODE_FLOAT, MODE_INT); + + /* sext_optab is also used for FLOAT_EXTEND. */ + init_intraclass_conv_libfuncs (sext_optab, "extend", MODE_FLOAT, true); + init_intraclass_conv_libfuncs (trunc_optab, "trunc", MODE_FLOAT, false); /* Use cabs for double complex abs, since systems generally have cabs. Don't define any libcall for float complex, so that cabs will be used. */ -- 2.7.4