This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Compiling libgcc functions with non-default LIBGCC2_UNITS_PER_WORD
On Sun, Jan 21, 2007 at 11:09:56PM +0100, Rask Ingemann Lambertsen wrote:
> I would like to be able to add something like
>
> LIBGCC2_EXTRA_FUNCS = _ashldi3:2 _ashrdi3:2 _lshrdi3:2 _divdi3:2 _moddi3:2
>
> to t-machine instead of
>
> LIB2FUNCS_EXTRA = ashlsi3.c ashrsi3.c lshrsi3.c ...
>
> ashlsi3.c: $(srcdir)/libgcc2.c $(srcdir)/libgcc2.h
> ./xgcc -B./ -E -Dinhibit_libc -DLIBGCC2_UNITS_PER_WORD=2 -DL_ashldi3 \
> -DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I . -I $(srcdir) \
> -I $(srcdir)/../include $(srcdir)/libgcc2.c -o ashlsi3.c
>
> and so on, to provide the functions _ashlsi3, _ashrsi3, _lshrsi3, _divsi3
> and _modsi3 in addition to the default DImode ones.
Well, it would be much simpler than that. You could reuse the existing
code.
intfuncs = _ashlXX3 _ashrXX3 _lshrXX3 _divXX3 _modXX3
siintfuncs = $(subst XX,si,$(intfuncs))
diintfuncs = $(subst XX,d i,$(intfuncs))
iter-items := $(siintfuncs)
iter-labels := $(diintfuncs)
iter-sizes := $(patsubst %,2,$(siintfuncs))
include $(srcdir)/empty.mk $(patsubst %,$(srcdir)/siditi-object.mk,$(iter-items))
libgcc-objects += $(patsubst %,%$(objext),$(siintfuncs))
ifeq ($(enable_shared),yes)
libgcc-s-objects += $(patsubst %,%_s$(objext),$(siintfuncs))
endif
If you think it would be useful for enough targets, you could add some
code to automatically extract the bits before and after the colon and
give this a standard name that tdep files could set. That should get
you started.
--
Daniel Jacobowitz
CodeSourcery