LDC 0.11.0 Beta 3

Kai Nacke kai at redstar.de
Sun Jun 30 10:10:37 PDT 2013


On Sunday, 30 June 2013 at 01:52:46 UTC, bearophile wrote:
> int main() {
>     import core.simd;
>     float[16] a = 1.0;
>     float4 t = 0, k = 2;
>     auto b = cast(float4[])a;
>     for (size_t i = 0; i < b.length; i++)
>         t += b[i] * k;
>     return cast(int)t.array[2];
> }
>
>
>
> Compiling it with "ldmd2 -O":
>
> Error: Instruction does not dominate all uses!
>   %tmp33.Elt = fmul float %tmp33.Elt.lhs, 2.000000e+00
>   %1 = fadd float %0, %tmp33.Elt
> Instruction does not dominate all uses!
>   %tmp31 = load <4 x float>* %tmp30, align 16
>   %tmp33.Elt.lhs = extractelement <4 x float> %tmp31, i32 2
> Broken module found, compilation terminated.
> Broken module found, compilation terminated.
> Broken module found, compilation terminated.
>
> Bye,
> bearophile

Thanks for the nice test case.

It looks like a LLVM 3.3 problem. I can reproduce it with LDC 
head and LLVM 3.3, but not with LLVM trunk or LLVM 3.2. I will 
further investigate it..

Kai



More information about the digitalmars-d-ldc mailing list