aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorWill Cohen <wcohen@redhat.com>2001-02-21 05:05:25 +0000
committerJeff Law <law@gcc.gnu.org>2001-02-20 22:05:25 -0700
commit75beacf8857ecce10fcfdaf4e00dbe21cb56e224 (patch)
tree14cce2eb5e6754f2aa1439ec07c12abe2e8eb43a /gcc
parent33011c358ecb53978ad9d93f1d1dc5e9cd1ad551 (diff)
downloadgcc-75beacf8857ecce10fcfdaf4e00dbe21cb56e224.zip
gcc-75beacf8857ecce10fcfdaf4e00dbe21cb56e224.tar.gz
gcc-75beacf8857ecce10fcfdaf4e00dbe21cb56e224.tar.bz2
quadlib.c (_U_Qfcnvfxt_quad_to_usgl): New function.
* config/pa/quadlib.c (_U_Qfcnvfxt_quad_to_usgl): New function. * config/pa/long_double.h (FIXUNS_TRUNCTFSI2_LIBCALL): Added. (INIT_TARGET_OPTABS): Use FIXUNS_TRUNCTFSI2_LIBCALL for fixunstfsi_libfunc. From-SVN: r39937
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/pa/long_double.h3
-rw-r--r--gcc/config/pa/quadlib.c9
3 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e70bd83..af11506 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2001-02-20 Will Cohen <wcohen@redhat.com>
+
+ * config/pa/quadlib.c (_U_Qfcnvfxt_quad_to_usgl): New function.
+ * config/pa/long_double.h (FIXUNS_TRUNCTFSI2_LIBCALL): Added.
+ (INIT_TARGET_OPTABS): Use FIXUNS_TRUNCTFSI2_LIBCALL for
+ fixunstfsi_libfunc.
+
2001-02-20 Stan Shebs <shebs@apple.com>
* config/rs6000/rs6000.c (output_cbranch): Output branches
diff --git a/gcc/config/pa/long_double.h b/gcc/config/pa/long_double.h
index 92d0376..e65f15f 100644
--- a/gcc/config/pa/long_double.h
+++ b/gcc/config/pa/long_double.h
@@ -52,6 +52,7 @@ do { long value[4]; \
we can massage its return value for PA64. */
#define FIX_TRUNCTFSI2_LIBCALL \
(TARGET_64BIT ? "__U_Qfcnvfxt_quad_to_sgl" : "_U_Qfcnvfxt_quad_to_sgl")
+#define FIXUNS_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxt_quad_to_usgl"
#define FIX_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxt_quad_to_dbl"
#define EQTF2_LIBCALL "_U_Qfeq"
#define NETF2_LIBCALL "_U_Qfne"
@@ -89,7 +90,7 @@ do { long value[4]; \
floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL); \
fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL);\
fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL);\
- fixunstfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL); \
+ fixunstfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL);\
fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL); \
eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL); \
netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL); \
diff --git a/gcc/config/pa/quadlib.c b/gcc/config/pa/quadlib.c
index 598e0c2..cdf3ea9 100644
--- a/gcc/config/pa/quadlib.c
+++ b/gcc/config/pa/quadlib.c
@@ -92,3 +92,12 @@ __U_Qfcnvfxt_quad_to_sgl (long double a)
return _U_Qfcnvfxt_quad_to_sgl (a) >> 32;
}
#endif
+
+/* HP only has signed conversion in library, so need to synthesize an
+ unsigned version */
+unsigned int
+_U_Qfcnvfxt_quad_to_usgl(long double a)
+{
+ extern long long _U_Qfcnvfxt_quad_to_dbl (long double a);
+ return (unsigned int) _U_Qfcnvfxt_quad_to_dbl (a);
+}