diff options
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r-- | libstdc++-v3/src/Makefile.am | 24 | ||||
-rw-r--r-- | libstdc++-v3/src/Makefile.in | 18 | ||||
-rw-r--r-- | libstdc++-v3/src/complex.cc | 328 | ||||
-rw-r--r-- | libstdc++-v3/src/complexf.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/src/complexl.cc | 3 | ||||
-rw-r--r-- | libstdc++-v3/src/locale.cc | 6 | ||||
-rw-r--r-- | libstdc++-v3/src/localename.cc | 3 |
7 files changed, 129 insertions, 254 deletions
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 92a197a2dc5..fa8527ca15f 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -21,7 +21,7 @@ ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. -## $Id: Makefile.am,v 1.29 2000/08/22 17:22:38 bkoz Exp $ +## $Id: Makefile.am,v 1.30 2000/09/14 19:44:03 bkoz Exp $ AUTOMAKE_OPTIONS = 1.3 gnits MAINT_CHARSET = latin1 @@ -48,7 +48,7 @@ EXTRA_LTLIBRARIES = libinst-string.la libinst-wstring.la # NB: DEBUGFLAGS have to be at the end so that -O2 can be overridden. AC_CXXFLAGS = \ $(WERROR) @WFMT_FLAGS@ @CPU_FLAGS@ @EXTRA_CXX_FLAGS@ \ - @SECTION_FLAGS@ @DEBUG_FLAGS@ + @SECTION_FLAGS@ @CSHADOWFLAGS@ @DEBUG_FLAGS@ # Need to manually set this option because AC_CXXFLAGS has to be at # the end of the compile line so that -O2 can be overridden as the @@ -70,9 +70,10 @@ LIBIO_INCLUDES = -I$(top_srcdir)/libio endif if GLIBCPP_USE_CSHADOW -CSHADOW_INCLUDES = #CSHADOW_INCLUDES = \ -# @CSHADOWFLAGS@ -I$(top_srcdir)/shadow -I$(top_builddir)/cshadow +# -I$(top_srcdir)/std -I$(top_srcdir)/shadow -I$(top_builddir)/cshadow +CSHADOW_INCLUDES = \ + -I$(top_srcdir)/std -I$(top_srcdir)/shadow else CSHADOW_INCLUDES = endif @@ -82,17 +83,20 @@ CONFIG_INCLUDES = \ -I$(top_srcdir)/@ctype_include_dir@ INCLUDES = \ - -D_GNU_SOURCE -nostdinc++ $(CSHADOW_INCLUDES) -I$(top_srcdir) \ - $(LIBIO_INCLUDES) $(CONFIG_INCLUDES) $(TOPLEVEL_INCLUDES) + -D_GNU_SOURCE -D_ISOC99_SOURCE -nostdinc++ $(CSHADOW_INCLUDES) \ + -I$(top_builddir) -I$(top_srcdir) \ + $(CONFIG_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) -# Need to explicitly set this so that AM_CXXFLAGS is last. (That way, +# Need to explicitly set this so that AM_CXXFLAGS is last. In +# addition, we don't use $(DEFS), which tries to set $(top_srcdir) as +# an include diretory, which screws up shadow headers. (That way, # things like -O2 passed down from the toplevel can be overridden by # --enable-debug.) -CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +CXXCOMPILE = $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(CXXFLAGS) $(AM_CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) \ +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) # We have a problem when building the shared libstdc++ object if the @@ -246,7 +250,7 @@ $(libstdc___la_OBJECTS): $(CSHADOW_H) $(top_builddir)/stamp-cshadow: $(top_srcdir)/mkinclosure \ $(top_srcdir)/mkcshadow $(top_srcdir)/mkinclosure \ - "-I $(top_builddir)/../../gcc/include -I /usr/include -G machine/ansi.h" | $(top_srcdir)/mkcshadow; + "-I $(top_builddir)/../../gcc/include -I /usr/include -G fcntl.h unistd.h" | $(top_srcdir)/mkcshadow; rm -f $(top_builddir)/stamp-cshadow echo "done" > $(top_builddir)/stamp-cshadow diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index a3aed9b757d..572033ad16d 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -124,7 +124,7 @@ EXTRA_LTLIBRARIES = libinst-string.la libinst-wstring.la # These bits are all figured out from configure. Look in acinclude.m4 # or configure.in to see how they are set. # NB: DEBUGFLAGS have to be at the end so that -O2 can be overridden. -AC_CXXFLAGS = $(WERROR) @WFMT_FLAGS@ @CPU_FLAGS@ @EXTRA_CXX_FLAGS@ @SECTION_FLAGS@ @DEBUG_FLAGS@ +AC_CXXFLAGS = $(WERROR) @WFMT_FLAGS@ @CPU_FLAGS@ @EXTRA_CXX_FLAGS@ @SECTION_FLAGS@ @CSHADOWFLAGS@ @DEBUG_FLAGS@ # Need to manually set this option because AC_CXXFLAGS has to be at @@ -137,24 +137,24 @@ AM_CXXFLAGS = -fno-implicit-templates $(OPTIMIZE_CXXFLAGS) -Wall -Wno-format TOPLEVEL_INCLUDES = -I$(includedir) @GLIBCPP_NEED_LIBIO_TRUE@LIBIO_INCLUDES = -I$(top_builddir)/libio -I$(top_srcdir)/libio @GLIBCPP_NEED_LIBIO_FALSE@LIBIO_INCLUDES = -I$(top_srcdir)/libio -#CSHADOW_INCLUDES = \ -# @CSHADOWFLAGS@ -I$(top_srcdir)/shadow -I$(top_builddir)/cshadow -@GLIBCPP_USE_CSHADOW_TRUE@CSHADOW_INCLUDES = +@GLIBCPP_USE_CSHADOW_TRUE@CSHADOW_INCLUDES = -I$(top_srcdir)/std -I$(top_srcdir)/shadow @GLIBCPP_USE_CSHADOW_FALSE@CSHADOW_INCLUDES = CONFIG_INCLUDES = -I$(top_srcdir)/@cpu_include_dir@ -I$(top_srcdir)/@ctype_include_dir@ -INCLUDES = -D_GNU_SOURCE -nostdinc++ $(CSHADOW_INCLUDES) -I$(top_srcdir) $(LIBIO_INCLUDES) $(CONFIG_INCLUDES) $(TOPLEVEL_INCLUDES) +INCLUDES = -D_GNU_SOURCE -D_ISOC99_SOURCE -nostdinc++ $(CSHADOW_INCLUDES) -I$(top_builddir) -I$(top_srcdir) $(CONFIG_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES) -# Need to explicitly set this so that AM_CXXFLAGS is last. (That way, +# Need to explicitly set this so that AM_CXXFLAGS is last. In +# addition, we don't use $(DEFS), which tries to set $(top_srcdir) as +# an include diretory, which screws up shadow headers. (That way, # things like -O2 passed down from the toplevel can be overridden by # --enable-debug.) -CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) +CXXCOMPILE = $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) # We have a problem when building the shared libstdc++ object if the @@ -457,7 +457,7 @@ $(libstdc___la_OBJECTS): $(CSHADOW_H) $(top_builddir)/stamp-cshadow: $(top_srcdir)/mkinclosure \ $(top_srcdir)/mkcshadow $(top_srcdir)/mkinclosure \ - "-I $(top_builddir)/../../gcc/include -I /usr/include -G machine/ansi.h" | $(top_srcdir)/mkcshadow; + "-I $(top_builddir)/../../gcc/include -I /usr/include -G fcntl.h unistd.h" | $(top_srcdir)/mkcshadow; rm -f $(top_builddir)/stamp-cshadow echo "done" > $(top_builddir)/stamp-cshadow diff --git a/libstdc++-v3/src/complex.cc b/libstdc++-v3/src/complex.cc index b19a74a9dab..f9f64196199 100644 --- a/libstdc++-v3/src/complex.cc +++ b/libstdc++-v3/src/complex.cc @@ -36,239 +36,115 @@ #ifndef FLT # define FLT double -# define FCT(name) ::name #endif +// This file often breaks due to compiler bugs. May need to put in guards, ie: +// #if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) +// and +// #if defined(_GLIBCPP_FLOAT_SPECIALIZATION) + namespace std { - - template<> - FLT - abs(const complex<FLT>& __x) - { return FCT(cabs)(__x._M_value); } - - template<> - FLT - arg(const complex<FLT>& __x) - { return FCT(carg)(__x._M_value); } - - template<> - complex<FLT> - polar(const FLT& __rho, const FLT& __theta) - { -#if defined _G_HAVE_SINCOS && !defined __osf__ - // Although sincos does exist on OSF3.2 and OSF4.0 we cannot use it - // since the necessary types are not defined in the headers. - FLT __sinx, __cosx; - FCT(sincos)(__theta, &__sinx, &__cosx); - return complex<FLT>(__rho * __cosx, __rho * __sinx); -#else -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - complex<FLT> __tmpf(__rho * FCT(cos)(__theta), - __rho * FCT(sin)(__theta)); - return __tmpf; -#else - return complex<FLT>(__rho * FCT(cos)(__theta), - __rho * FCT(sin)(__theta)); -#endif -#endif - } - - template<> - complex<FLT> - cos(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(ccos)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(ccos)(__x._M_value)); } -#endif - - template<> - complex<FLT> - cosh(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(ccosh)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(ccosh)(__x._M_value)); } -#endif - - template<> - complex<FLT> - exp(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(cexp)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(cexp)(__x._M_value)); } -#endif - - template<> - complex<FLT> - log(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(c_log)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(c_log)(__x._M_value)); } -#endif - - template<> - complex<FLT> - log10(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(clog10)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(clog10)(__x._M_value)); } -#endif - - template<> - complex<FLT> - pow(const complex<FLT>& __x, int __n) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(cexp) (__n * FCT(c_log)(__x._M_value))); - return __tmpf; - } -#else - { return complex<FLT>(FCT(cexp) (__n * FCT(c_log)(__x._M_value))); } -#endif - - - template<> - complex<FLT> - pow(const complex<FLT>& __x, const FLT& __y) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(cexp) (__y * FCT(c_log)(__x._M_value))); - return __tmpf; - } -#else - { return complex<FLT>(FCT(cexp) (__y * FCT(c_log)(__x._M_value))); } -#endif - - template<> - complex<FLT> - pow(const complex<FLT>& __x, const complex<FLT>& __y) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(cpow)(__x._M_value, __y._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(cpow)(__x._M_value, __y._M_value)); } -#endif - - template<> - complex<FLT> - pow(const FLT& __x, const complex<FLT>& __y) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(cexp)(__y._M_value * FCT(log)(__x))); - return __tmpf; - } -#else - { return complex<FLT>(FCT(cexp)(__y._M_value * FCT(log)(__x))); } -#endif - - template<> - complex<FLT> - sin(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(csin)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(csin)(__x._M_value)); } -#endif - - template<> - complex<FLT> - sinh(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(csinh)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(csinh)(__x._M_value)); } -#endif - - template<> - complex<FLT> - sqrt(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(csqrt)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(csqrt)(__x._M_value)); } -#endif - - template<> - complex<FLT> - tan(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(ctan)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(ctan)(__x._M_value)); } -#endif - - template<> - complex<FLT> - tanh(const complex<FLT>& __x) -#if defined(_GLIBCPP_BUGGY_FLOAT_COMPLEX) \ - && defined(_GLIBCPP_FLOAT_SPECIALIZATION) - { - complex<FLT> __tmpf(FCT(ctanh)(__x._M_value)); - return __tmpf; - } -#else - { return complex<FLT>(FCT(ctanh)(__x._M_value)); } -#endif - + template<> + FLT + abs(const complex<FLT>& __x) + { return cabs(__x._M_value); } + + template<> + FLT + arg(const complex<FLT>& __x) + { return carg(__x._M_value); } + + template<> + complex<FLT> + polar(const FLT& __rho, const FLT& __theta) + { +#if 0 +// XXX +// defined(_GLIBCPP_HAVE_SINCOS) && !defined(__osf__) + // Although sincos does exist on OSF3.2 and OSF4.0 we cannot use it + // since the necessary types are not defined in the headers. + FLT __sinx, __cosx; + sincos(__theta, &__sinx, &__cosx); + return complex<FLT>(__rho * __cosx, __rho * __sinx); +#else + return complex<FLT>(__rho * cos(__theta), __rho * sin(__theta)); +#endif + } + + template<> + complex<FLT> + cos(const complex<FLT>& __x) + { return complex<FLT>(ccos(__x._M_value)); } + + template<> + complex<FLT> + cosh(const complex<FLT>& __x) + { return complex<FLT>(ccosh(__x._M_value)); } + + template<> + complex<FLT> + exp(const complex<FLT>& __x) + { return complex<FLT>(cexp(__x._M_value)); } + + template<> + complex<FLT> + log(const complex<FLT>& __x) + { return complex<FLT>(c_log(__x._M_value)); } + + template<> + complex<FLT> + log10(const complex<FLT>& __x) + { return complex<FLT>(clog10(__x._M_value)); } + + template<> + complex<FLT> + pow(const complex<FLT>& __x, int __n) + { return complex<FLT>(cexp(__n * c_log(__x._M_value))); } + + template<> + complex<FLT> + pow(const complex<FLT>& __x, const FLT& __y) + { return complex<FLT>(cexp(__y * c_log(__x._M_value))); } + + template<> + complex<FLT> + pow(const complex<FLT>& __x, const complex<FLT>& __y) + { return complex<FLT>(cpow(__x._M_value, __y._M_value)); } + + template<> + complex<FLT> + pow(const FLT& __x, const complex<FLT>& __y) + { return complex<FLT>(cexp(__y._M_value * log(__x))); } + + template<> + complex<FLT> + sin(const complex<FLT>& __x) + { return complex<FLT>(csin(__x._M_value)); } + + template<> + complex<FLT> + sinh(const complex<FLT>& __x) + { return complex<FLT>(csinh(__x._M_value)); } + + template<> + complex<FLT> + sqrt(const complex<FLT>& __x) + { return complex<FLT>(csqrt(__x._M_value)); } + + template<> + complex<FLT> + tan(const complex<FLT>& __x) + { return complex<FLT>(ctan(__x._M_value)); } + + template<> + complex<FLT> + tanh(const complex<FLT>& __x) + { return complex<FLT>(ctanh(__x._M_value)); } + } // namespace std - - - - - - - - diff --git a/libstdc++-v3/src/complexf.cc b/libstdc++-v3/src/complexf.cc index 5ef12afce18..7831d7e7f6c 100644 --- a/libstdc++-v3/src/complexf.cc +++ b/libstdc++-v3/src/complexf.cc @@ -1,5 +1,4 @@ #define FLT float -#define FCT(name) ::name##f // Used in complex.cc to work around GCC's buggy __complex__ float support. #define _GLIBCPP_FLOAT_SPECIALIZATION 1 #include "complex.cc" diff --git a/libstdc++-v3/src/complexl.cc b/libstdc++-v3/src/complexl.cc index 4c11abd9407..0cfab1c3910 100644 --- a/libstdc++-v3/src/complexl.cc +++ b/libstdc++-v3/src/complexl.cc @@ -1,8 +1,7 @@ #include <bits/c++config.h> -#ifdef _GLIBCPP_HAVE_SINL +#ifdef _GLIBCPP_USE_LONG_LONG /* We compile these functions only when we have the long double functions available. */ #define FLT long double -#define FCT(name) ::name##l #include "complex.cc" #endif diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 64996efb304..ae56bdbb040 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -38,7 +38,7 @@ #include <bits/std_vector.h> #include <bits/std_memory.h> // for auto_ptr #ifdef _GLIBCPP_USE_WCHAR_T - #include <bits/std_cwctype.h> // for towupper, etc. +# include <bits/std_cwctype.h> // for towupper, etc. #endif namespace std { @@ -952,7 +952,7 @@ namespace std { do_widen(const char* __low, const char* __high, wchar_t* __dest) const { mbstate_t __state; - memset(&__state, 0, sizeof(mbstate_t)); + memset(static_cast<void*>(&__state), 0, sizeof(mbstate_t)); mbsrtowcs(__dest, &__low, __high - __low, &__state); return __high; } @@ -971,7 +971,7 @@ namespace std { char* __dest) const { mbstate_t __state; - memset(&__state, 0, sizeof(mbstate_t)); + memset(static_cast<void*>(&__state), 0, sizeof(mbstate_t)); size_t __len = __high - __low; size_t __conv = wcsrtombs(__dest, &__low, __len, &__state); if (__conv == __len) diff --git a/libstdc++-v3/src/localename.cc b/libstdc++-v3/src/localename.cc index 7d6f259acce..8205be07b44 100644 --- a/libstdc++-v3/src/localename.cc +++ b/libstdc++-v3/src/localename.cc @@ -29,7 +29,6 @@ #include <bits/std_clocale.h> #include <bits/std_locale.h> #include <bits/std_cstring.h> -#include <bits/std_cassert.h> #include <bits/std_vector.h> #include <bits/std_stdexcept.h> @@ -167,8 +166,6 @@ namespace std { locale::_Impl:: _M_replace_categories(const _Impl* __other, category __cat) { - assert((__cat & locale::all) && !(__cat & ~locale::all)); - unsigned int __mask = locale::all & -static_cast<unsigned int>(locale::all); for (unsigned int __ix = 0; (-__mask & __cat) != 0; ++__ix, (__mask <<= 1)) { |