ldc-developers / ldc

The LLVM-based D Compiler.
http://wiki.dlang.org/LDC
Other
1.18k stars 255 forks source link

0.17.0-beta1: Test failures on OpenSolaris 11.3 (x86) #1259

Open redstar opened 8 years ago

redstar commented 8 years ago

The following failures in the dmd testsuite are still present:

relocation requires reference symbol: test34.d using option -O and test42.d using option -inline (This could be a tool problem. ld version 2.23.1 is used.) Assertion failure: test22.d (Could be a bug in the test case, see function poly_asm().) Test failed: caught signal: 11: arrayop.d using option -O

redstar commented 8 years ago

See https://github.com/D-Programming-Language/dmd/pull/5454 for the failure in test22.d.

redstar commented 8 years ago

test22.d should be fixed now.

The (first) failure in arrayop.d is in line 45. It is an assignment: b = [1, 2, 3]; Still unclear what is happening.

redstar commented 8 years ago

Looks like an alignment issue:

   0x0808901c <+76>:    movaps 0x807ea10,%xmm0
=> 0x08089023 <+83>:    movaps %xmm0,-0x2c8(%esi)

%esi: 0xfe750540 -25885376

The resulting address is only 8-byte aligned but movaps requires an 16-byte aligned address.

rainers commented 8 years ago

Maybe related, but I see misalignments, too, when building Win64 phobos release unittests with LLVM 3.8.

Dumping object files, I noticed that the same XMM constant symbol happens to exist as a 16-byte-aligned normal section in one object file, but also as 8-byte-aligned COMDAT in another. According to the map file, the symbol picked up by the linker is the COMDAT and is therefore misaligned.

JohanEngelen commented 6 years ago

@redstar Is this still present in LDC 1.3+ ?