[RFC] D support for S/390
Thu Apr 11 19:58:00 GMT 2019
>> This will occur on any 32-bit target. The following patch (using
>> ssize_t instead) allowed the code to compile:
> thanks, included your fix and attempted a more generic version of the
> 186 test.
> I also continued debugging some fails further:
> - Most of the MurmurHash fails are simply due to the wrong byte order
> being asserted but I did not yet check whether multi-chunk hashes are
> more complicated to get right - I suppose not, though.
> - The regex searches are even documented to not work properly on
> big-endian platforms. I still guess they could be fixed without too much
> - Math unit tests fail due to lower precision than on other machines.
> Maybe this is because I only tested using -O0.
good. I'm seeing those two, but at the moment concentrate on a couple
of Solaris/SPARC specific issues (mcontext_t was wrong, causing memory
corruption; need a different variant of makecontext; stack needs
doubleword alignment; some minor stuff). 64-bit results are not too bad ATM:
=== gdc Summary for unix/-m64 ===
# of expected passes 29159
# of unexpected failures 199
# of unsupported tests 20
=== libphobos Summary for unix/-m64 ===
# of expected passes 398
# of unexpected failures 22
and some of the failures also occur on Solaris/x86, but 32-bit execution
tests are terrible right now, mostly due to the same issue, I believe:
FAIL: libphobos.aa/test_aa.d execution test
Thread 2 received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 1)]
0x0009c9b0 in rt.aaA.Impl.length() const (this=...)
87 assert(used >= deleted);
#0 0x0009c9b0 in rt.aaA.Impl.length() const (this=...)
#1 0x0009c960 in rt.aaA.AA.empty() const (this=...)
#2 0x0009e83c in _aaValues (aa=..., keysz=4, valsz=1,
tiValueArray=0x718fc <initializer for TypeInfo_AS7test_aa15testKeysValues1FZ1T>) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/rt/aaA.d:513
#3 0x00082688 in object.values!(test_aa.testKeysValues1().T[int], test_aa.testKeysValues1().T, int).values(test_aa.testKeysValues1().T[int]) (aa=...)
#4 0x00077a9c in test_aa.testKeysValues1() ()
#5 0x00077604 in D main ()
1: x/i $pc
=> 0x9c9b0 <_D2rt3aaA4Impl6lengthMxFNaNbNdNiZk+32>: ld [ %g1 + 8 ], %g2
(gdb) p/x $g1
$1 = 0x8
Investigating this is my next task.
> @Iain: With the patch as it is - hoping no additional tab/space damage
> :) - is there any chance of getting it upstream anytime soon?
I noticed you missed one piece of Iain's typeinfo.cc patch, btw.:
diff --git a/gcc/d/typeinfo.cc b/gcc/d/typeinfo.cc
@@ -886,7 +886,7 @@ public:
if (cd->isCOMinterface ())
flags |= ClassFlags::isCOMclass;
- this->layout_field (build_integer_cst (flags));
+ this->layout_field (build_integer_cst (flags, d_uint_type));
/* void *deallocator;
OffsetTypeInfo m_offTi; (not implemented)
Rainer Orth, Center for Biotechnology, Bielefeld University
More information about the Gcc-patches