summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark P Lutz <tecmpl1@triton.ca.boeing.com>2000-04-14 20:21:00 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-04-24 19:09:06 +0000
commit8bda1795263a5b700b86a63303514e5d538dd644 (patch)
treef22acaed7cb6135d27213abfffd2486208bcccf4
parent92d29cee5ff815b05b81b877528e4c77e73881c9 (diff)
downloadperl-8bda1795263a5b700b86a63303514e5d538dd644.tar.gz
Various Unicos 10.0.0.6 fixes.
Subject: [ID 20000414.007] Test suite failures in perl 5.6 on Cray T90 Reply-To: tecmpl1@triton.ca.boeing.com To: perl5-porters@perl.org Message-Id: <200004142021.UAA36232@triton.ca.boeing.com> p4raw-id: //depot/cfgperl@5940
-rw-r--r--hints/unicos.sh9
-rw-r--r--pp.c8
-rw-r--r--pp_ctl.c12
-rw-r--r--t/op/64bitint.t2
4 files changed, 26 insertions, 5 deletions
diff --git a/hints/unicos.sh b/hints/unicos.sh
index 7ffd73fbcc..ddbdee4ca0 100644
--- a/hints/unicos.sh
+++ b/hints/unicos.sh
@@ -2,13 +2,16 @@ case `uname -r` in
6.1*) shellflags="-m+65536" ;;
esac
case "$optimize" in
-'') optimize="-O1" ;;
+'') optimize="-O1 -h nofastmd" ;;
+esac
+case `uname -r` in
+10.*) pp_ctl_cflags='ccflags="$ccflags -DUNICOS_BROKEN_VOLATILE' ;;
esac
d_setregid='undef'
d_setreuid='undef'
case "$usemymalloc" in
-'') # The perl malloc.c SHOULD work says Ilya.
- # But for the time being (5.004_68), alas, it doesn't.
+'') # The perl malloc.c SHOULD work in Unicos (ILP64) says Ilya.
+ # But for the time being (5.004_68), alas, it doesn't. --jhi
# usemymalloc='y'
# ccflags="$ccflags -DNO_RCHECK"
usemymalloc='n'
diff --git a/pp.c b/pp.c
index a59664e4d1..316c7936d7 100644
--- a/pp.c
+++ b/pp.c
@@ -4743,10 +4743,14 @@ PP(pp_pack)
DIE(aTHX_ "Cannot compress negative numbers");
if (
-#ifdef CXUX_BROKEN_CONSTANT_CONVERT
- adouble <= UV_MAX_cxux
+#if UVSIZE > 4 && UVSIZE >= NVSIZE
+ adouble <= 0xffffffff
#else
+# ifdef CXUX_BROKEN_CONSTANT_CONVERT
+ adouble <= UV_MAX_cxux
+# else
adouble <= UV_MAX
+# endif
#endif
)
{
diff --git a/pp_ctl.c b/pp_ctl.c
index 4fcfb57f4a..8c16af9318 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2561,14 +2561,26 @@ S_docatch_body(pTHX)
return NULL;
}
+/* In Unicos 10.0.0.6 (T90) the cc seems to botch optimization so that
+ * if cursi is an auto variable inside S_docatch() cursi doesn't get
+ * properly saved/restored across longjmps. &/
+#ifdef UNICOS_BROKEN_VOLATILE
+volatile PERL_SI *cursi;
+#endif
+
STATIC OP *
S_docatch(pTHX_ OP *o)
{
dTHR;
int ret;
OP *oldop = PL_op;
+#ifdef UNICOS_BROKEN_VOLATILE
+ dJMPENV;
+ cursi = PL_curstackinfo;
+#else
volatile PERL_SI *cursi = PL_curstackinfo;
dJMPENV;
+#endif
#ifdef DEBUGGING
assert(CATCH_GET == TRUE);
diff --git a/t/op/64bitint.t b/t/op/64bitint.t
index f59c953825..6d33e8ab8d 100644
--- a/t/op/64bitint.t
+++ b/t/op/64bitint.t
@@ -1,5 +1,7 @@
#./perl
+use integer;
+
BEGIN {
eval { my $q = pack "q", 0 };
if ($@) {