Test source: git
Comments: LLVM bug: memcpy -> load/store
Source: <stdin> ERROR: Unsupported instruction: %B = addrspacecast ptr %A to ptr addrspace(1) ERROR: Unsupported instruction: %B = addrspacecast ptr %A to ptr addrspace(1) ERROR: Unsupported instruction: %B = addrspacecast ptr %A to ptr addrspace(1) ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ERROR: Unsupported instruction: %fptr.as1 = addrspacecast ptr %a to ptr addrspace(1) ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ERROR: Unsupported instruction: %cast1 = addrspacecast ptr %x to ptr addrspace(1) ERROR: Unsupported instruction: %cond.in = select i1 %a, ptr %c, ptr %p.0.c ERROR: Unsupported metadata: 1 ERROR: Unsupported instruction: store volatile i16 42, ptr %a, align 2 ERROR: Unsupported instruction: store volatile i16 42, ptr %a, align 2 ERROR: Unsupported instruction: store atomic volatile i64 0, ptr %ptr seq_cst, align 8 ---------------------------------------- define i32 @test0() denormal-fp-math=ieee,ieee { %entry: %a1 = alloca i64 4, align 4, dead %a2 = alloca i64 4, align 4, dead start_lifetime ptr %a1 store i32 0, ptr %a1, align 4 %v1 = load i32, ptr %a1, align 4 free ptr %a1 unconstrained start_lifetime ptr %a2 store float 0.000000, ptr %a2, align 4 %v2 = load float, ptr %a2, align 4 %v2.int = bitcast float %v2 to i32 %sum1 = add i32 %v1, %v2.int free ptr %a2 unconstrained ret i32 %sum1 } => define i32 @test0() denormal-fp-math=ieee,ieee { %entry: %v2.int = bitcast float 0.000000 to i32 %sum1 = add i32 0, %v2.int ret i32 %sum1 } Transformation seems to be correct! ---------------------------------------- define i32 @test1() denormal-fp-math=ieee,ieee { %entry: %X = alloca i64 8, align 8 %Y = gep ptr %X, 8 x i64 0, 1 x i64 0 store i32 0, ptr %Y, align 4 %Z = load i32, ptr %Y, align 4 ret i32 %Z } => define i32 @test1() denormal-fp-math=ieee,ieee { %entry: ret i32 0 } Transformation seems to be correct! ---------------------------------------- define i64 @test2(i64 %X) denormal-fp-math=ieee,ieee { %entry: %A = alloca i64 8, align 1 store i64 %X, ptr %A, align 4 br label %L2 %L2: %Z = load i64, ptr %A, align 4 ret i64 %Z } => define i64 @test2(i64 %X) denormal-fp-math=ieee,ieee { %entry: br label %L2 %L2: ret i64 %X } Transformation seems to be correct! ERROR: Unsupported instruction: %A.sroa.0.2.gepB.sroa_cast = addrspacecast ptr %A.sroa.0.2.gepB.sroa_idx to ptr addrspace(1) ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ---------------------------------------- define i16 @test5() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 4, align 1 store float 0.000000, ptr %a, align 4 %ptr = gep ptr %a, 4 x i32 0, 1 x i32 2 %val = load i16, ptr %ptr, align 2 ret i16 %val } => define i16 @test5() denormal-fp-math=ieee,ieee { %entry: %0 = bitcast float 0.000000 to i32 %a.sroa.0.2.extract.shift = lshr i32 %0, 16 %a.sroa.0.2.extract.trunc = trunc i32 %a.sroa.0.2.extract.shift to i16 ret i16 %a.sroa.0.2.extract.trunc } Transformation seems to be correct! ERROR: Unsupported instruction: store volatile i32 707406378, ptr %a.sroa.0, align 4 ERROR: Unsupported instruction: %a.sroa.0.0.copyload = load volatile i32, ptr %src, align 1, !tbaa !0 ERROR: Unsupported metadata: 1 ---------------------------------------- define i64 @test9() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 3, align 8 store i8 0, ptr %a, align 1 %gep2 = gep inbounds ptr %a, 3 x i32 0, 1 x i64 0, 1 x i32 1 store i8 0, ptr %gep2, align 1 %gep3 = gep inbounds ptr %a, 3 x i32 0, 1 x i64 0, 1 x i32 2 store i8 26, ptr %gep3, align 1 %load = load i64, ptr %a, align 4 %result = and i64 %load, 16777215 ret i64 %result } => define i64 @test9() denormal-fp-math=ieee,ieee { %entry: %a.sroa.3.0.insert.ext = zext i8 26 to i64 %a.sroa.3.0.insert.shift = shl i64 %a.sroa.3.0.insert.ext, 16 %a.sroa.3.0.insert.mask = and i64 undef, -16711681 %a.sroa.3.0.insert.insert = or i64 %a.sroa.3.0.insert.mask, %a.sroa.3.0.insert.shift %a.sroa.2.0.insert.ext = zext i8 0 to i64 %a.sroa.2.0.insert.shift = shl i64 %a.sroa.2.0.insert.ext, 8 %a.sroa.2.0.insert.mask = and i64 %a.sroa.3.0.insert.insert, -65281 %a.sroa.2.0.insert.insert = or i64 %a.sroa.2.0.insert.mask, %a.sroa.2.0.insert.shift %a.sroa.0.0.insert.ext = zext i8 0 to i64 %a.sroa.0.0.insert.mask = and i64 %a.sroa.2.0.insert.insert, -256 %a.sroa.0.0.insert.insert = or i64 %a.sroa.0.0.insert.mask, %a.sroa.0.0.insert.ext %result = and i64 %a.sroa.0.0.insert.insert, 16777215 ret i64 %result } Transformation seems to be correct! ---------------------------------------- define ptr @test10() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 8, align 1 memset ptr %a align 1, i8 0, i32 8 %s2ptr = load ptr, ptr %a, align 8 ret ptr %s2ptr } => define ptr @test10() denormal-fp-math=ieee,ieee { %entry: ret ptr null } Transformation seems to be correct! ---------------------------------------- define i32 @test11(i1 %c1) denormal-fp-math=ieee,ieee { %entry: %X = alloca i64 4, align 4 br i1 %c1, label %good, label %bad %bad: %Y2 = gep ptr %X, 4 x i64 1 store i32 0, ptr %Y2, align 4 %Z2 = load i32, ptr %Y2, align 4 ret i32 %Z2 %good: store i32 0, ptr %X, align 4 %Z = load i32, ptr %X, align 4 ret i32 %Z } => define i32 @test11(i1 %c1) denormal-fp-math=ieee,ieee { %entry: br i1 %c1, label %good, label %bad %bad: ret i32 poison %good: ret i32 0 } Transformation seems to be correct! ---------------------------------------- define i8 @test12() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 3, align 1 %b = alloca i64 3, align 1 store i8 0, ptr %a, align 1 %a1ptr = gep ptr %a, 3 x i64 0, 1 x i32 1 store i8 0, ptr %a1ptr, align 1 %a2ptr = gep ptr %a, 3 x i64 0, 1 x i32 2 store i8 0, ptr %a2ptr, align 1 %ai = load i24, ptr %a, align 4 store i24 %ai, ptr %b, align 4 %b0 = load i8, ptr %b, align 1 %b1ptr = gep ptr %b, 3 x i64 0, 1 x i32 1 %b1 = load i8, ptr %b1ptr, align 1 %b2ptr = gep ptr %b, 3 x i64 0, 1 x i32 2 %b2 = load i8, ptr %b2ptr, align 1 %bsum0 = add i8 %b0, %b1 %bsum1 = add i8 %bsum0, %b2 ret i8 %bsum1 } => define i8 @test12() denormal-fp-math=ieee,ieee { %entry: %a.sroa.3.0.insert.ext = zext i8 0 to i24 %a.sroa.3.0.insert.shift = shl i24 %a.sroa.3.0.insert.ext, 16 %a.sroa.3.0.insert.mask = and i24 undef, 65535 %a.sroa.3.0.insert.insert = or i24 %a.sroa.3.0.insert.mask, %a.sroa.3.0.insert.shift %a.sroa.2.0.insert.ext = zext i8 0 to i24 %a.sroa.2.0.insert.shift = shl i24 %a.sroa.2.0.insert.ext, 8 %a.sroa.2.0.insert.mask = and i24 %a.sroa.3.0.insert.insert, 16711935 %a.sroa.2.0.insert.insert = or i24 %a.sroa.2.0.insert.mask, %a.sroa.2.0.insert.shift %a.sroa.0.0.insert.ext = zext i8 0 to i24 %a.sroa.0.0.insert.mask = and i24 %a.sroa.2.0.insert.insert, 16776960 %a.sroa.0.0.insert.insert = or i24 %a.sroa.0.0.insert.mask, %a.sroa.0.0.insert.ext %b.sroa.0.0.extract.trunc = trunc i24 %a.sroa.0.0.insert.insert to i8 %b.sroa.2.0.extract.shift = lshr i24 %a.sroa.0.0.insert.insert, 8 %b.sroa.2.0.extract.trunc = trunc i24 %b.sroa.2.0.extract.shift to i8 %b.sroa.3.0.extract.shift = lshr i24 %a.sroa.0.0.insert.insert, 16 %b.sroa.3.0.extract.trunc = trunc i24 %b.sroa.3.0.extract.shift to i8 %bsum0 = add i8 %b.sroa.0.0.extract.trunc, %b.sroa.2.0.extract.trunc %bsum1 = add i8 %bsum0, %b.sroa.3.0.extract.trunc ret i8 %bsum1 } Transformation seems to be correct! ---------------------------------------- define i32 @test13() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 3, align 2 store i8 0, ptr %a, align 1 %b1ptr = gep ptr %a, 3 x i64 0, 1 x i32 1 store i8 0, ptr %b1ptr, align 1 %b2ptr = gep ptr %a, 3 x i64 0, 1 x i32 2 store i8 0, ptr %b2ptr, align 1 %iptrgep = gep ptr %a, 2 x i64 1 %i = load i16, ptr %iptrgep, align 2 %ret = zext i16 %i to i32 ret i32 %ret } => define i32 @test13() denormal-fp-math=ieee,ieee { %entry: %a.sroa.2.2.load.ext = zext i8 0 to i16 %ret = zext i16 %a.sroa.2.2.load.ext to i32 ret i32 %ret } Transformation seems to be correct! ---------------------------------------- define void @test14(...) denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 12, align 8 %p = alloca i64 8, align 8 %0 = gep ptr %a, 1 x i64 12 %1 = load i32, ptr %a, align 4 store i32 %1, ptr %0, align 4 %2 = gep inbounds ptr %0, 4 x i32 1 %3 = gep inbounds ptr %a, 4 x i32 1 %4 = load i32, ptr %3, align 4 store i32 %4, ptr %2, align 4 %5 = gep inbounds ptr %0, 4 x i32 2 %6 = gep inbounds ptr %a, 4 x i32 2 %7 = load i32, ptr %6, align 4 store i32 %7, ptr %5, align 4 ret void } => define void @test14(...) denormal-fp-math=ieee,ieee { %entry: ret void } Transformation seems to be correct! ---------------------------------------- define i32 @test15(i1 %flag) denormal-fp-math=ieee,ieee { %entry: %l0 = alloca i64 8, align 8 %l1 = alloca i64 8, align 8 %l2 = alloca i64 8, align 8 %l3 = alloca i64 8, align 8 br label %loop %loop: %dead3 = phi ptr [ %gep3, %loop ], [ null, %entry ] store i64 1879048192, ptr %l0, align 8 store i64 1879048192, ptr %l1, align 8 store i64 1879048192, ptr %l2, align 8 %gep2.1 = gep ptr %l2, 1 x i64 1 %gep2.2 = gep ptr %l2, 1 x i64 3 %dead2 = select i1 %flag, ptr %gep2.1, ptr %gep2.2 store i64 1879048192, ptr %l3, align 8 %gep3 = gep ptr %l3, 1 x i64 3 br label %loop } => define i32 @test15(i1 %flag) denormal-fp-math=ieee,ieee { %entry: br label %loop %loop: br label %loop } Transformation seems to be correct! ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ERROR: Unsupported metadata: 1 ---------------------------------------- define i64 @test19(ptr %x) denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 16, align 8 memcpy ptr %a align 1, ptr %x align 1, i32 16 %gep = gep inbounds ptr %a, 16 x i32 0, 1 x i64 0 %val = load i64, ptr %gep, align 4 ret i64 %val } => define i64 @test19(ptr %x) denormal-fp-math=ieee,ieee { %entry: %a.sroa.0.0.copyload = load i64, ptr %x, align 1 %a.sroa.2.0.x.sroa_idx = gep inbounds ptr %x, 1 x i64 8 %a.sroa.2.0.copyload = load ptr, ptr %a.sroa.2.0.x.sroa_idx, align 1 ret i64 %a.sroa.0.0.copyload } Transformation seems to be correct! ERROR: Unsupported instruction: %cast1 = addrspacecast ptr %x to ptr addrspace(1) ---------------------------------------- define i32 @test20() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 12, align 4 store i32 1, ptr %a, align 4 %gep2.1 = gep ptr %a, 12 x i32 0, 4 x i32 4294967294 %gep2.2 = gep ptr %gep2.1, 4 x i32 3 store i32 2, ptr %gep2.2, align 4 %gep3.1 = gep ptr %a, 12 x i32 0, 4 x i32 14 %gep3.2 = gep ptr %gep3.1, 4 x i32 4294967284 store i32 3, ptr %gep3.2, align 4 %load1 = load i32, ptr %a, align 4 %load2 = load i32, ptr %gep2.2, align 4 %load3 = load i32, ptr %gep3.2, align 4 %sum1 = add i32 %load1, %load2 %sum2 = add i32 %sum1, %load3 ret i32 %sum2 } => define i32 @test20() denormal-fp-math=ieee,ieee { %entry: %sum1 = add i32 1, 2 %sum2 = add i32 %sum1, 3 ret i32 %sum2 } Transformation seems to be correct! ---------------------------------------- define i8 @test21() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 2305843009213693951, align 1 %gep0 = gep ptr %a, 2305843009213693951 x i64 0, 1 x i64 2305843009213693949 store i8 255, ptr %gep0, align 1 %gep1 = gep ptr %a, 2305843009213693951 x i64 0, 1 x i64 -9223372036854775807 %gep2 = gep ptr %gep1, 1 x i64 -1 memset ptr %gep2 align 1, i8 0, i64 -1 %gep3 = gep ptr %gep1, 1 x i64 9223372036854775807 %gep4 = gep ptr %gep3, 1 x i64 9223372036854775807 %gep5 = gep ptr %gep4, 1 x i64 -6917529027641081857 store i8 255, ptr %gep5, align 1 store i32 0, ptr %gep4, align 4 %load = load i8, ptr %gep0, align 1 %gep6 = gep ptr %gep0, 1 x i32 1 %load2 = load i8, ptr %gep6, align 1 %result = or i8 %load, %load2 ret i8 %result } => define i8 @test21() denormal-fp-math=ieee,ieee { %entry: %result = or i8 255, 255 ret i8 %result } Transformation seems to be correct! ---------------------------------------- define void @PR13916.1() denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 1, align 1 memcpy ptr %a align 1, ptr %a align 1, i32 1 %tmp2 = load i8, ptr %a, align 1 ret void } => define void @PR13916.1() denormal-fp-math=ieee,ieee { %entry: ret void } Transformation seems to be correct! ---------------------------------------- define void @PR13916.2(i1 %c1) denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 1, align 1 br i1 %c1, label %if.then, label %if.end %if.then: memcpy ptr %a align 1, ptr %a align 1, i32 1 br label %if.end %if.end: %tmp2 = load i8, ptr %a, align 1 ret void } => define void @PR13916.2(i1 %c1) denormal-fp-math=ieee,ieee { %entry: br i1 %c1, label %if.then, label %if.end %if.then: br label %if.end %if.end: ret void } Transformation seems to be correct! ---------------------------------------- define void @PR13990(i1 %c1, i1 %c2, i1 %c3, i1 %c4, ptr %ptr) denormal-fp-math=ieee,ieee { %entry: %tmp1 = alloca i64 8, align 8 %tmp2 = alloca i64 8, align 8 br i1 %c1, label %bb1, label %bb2 %bb1: store ptr %ptr, ptr %tmp2, align 8 br i1 %c2, label %bb2, label %bb3 %bb2: %tmp50 = select i1 %c3, ptr %tmp2, ptr %tmp1 br i1 %c4, label %bb3, label %bb4 %bb4: assume i1 0 %bb3: assume i1 0 } => define void @PR13990(i1 %c1, i1 %c2, i1 %c3, i1 %c4, ptr %ptr) denormal-fp-math=ieee,ieee { %entry: br i1 %c1, label %bb1, label %bb2 %bb1: br i1 %c2, label %bb2, label %bb3 %bb2: br i1 %c4, label %bb3, label %bb4 %bb4: assume i1 0 %bb3: assume i1 0 } Transformation seems to be correct! ---------------------------------------- define double @PR13969(double %x) denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 8, align 8 %b = alloca i64 8, align 8 %c = alloca i64 8, align 8 store double %x, ptr %a, align 8 store ptr %c, ptr %b, align 8 store ptr %a, ptr %b, align 8 store double %x, ptr %c, align 8 %ret = load double, ptr %a, align 8 ret double %ret } => define double @PR13969(double %x) denormal-fp-math=ieee,ieee { %entry: ret double %x } Transformation seems to be correct! ---------------------------------------- define void @PR14034(ptr %ptr, ptr %ptr2) denormal-fp-math=ieee,ieee { %entry: %a = alloca i64 24, align 8 %list = gep ptr %a, 24 x i32 0, 1 x i64 8 %prev = gep ptr %list, 16 x i32 0, 1 x i64 8 store ptr %ptr, ptr %prev, align 8 memcpy ptr %ptr2 align 1, ptr %a align 1, i32 12 ret void } => define void @PR14034(ptr %ptr, ptr %ptr2) denormal-fp-math=ieee,ieee { %entry: %a.sroa.0 = alloca i64 12, align 8 memcpy ptr %ptr2 align 1, ptr %a.sroa.0 align 8, i32 12 ret void } Transformation seems to be correct! ---------------------------------------- define i32 @test22(i32 %x) denormal-fp-math=ieee,ieee { %entry: %a1 = alloca i64 4, align 8 %a2 = alloca i64 4, align 8 %a3 = alloca i64 8, align 8 %wrap1 = insertvalue [1 x {i32}] poison, i32 %x, 0, 0 store [1 x {i32}] %wrap1, ptr %a1, align 4 %load1 = load {[1 x {float}]}, ptr %a1, align 4 %unwrap1 = extractvalue {[1 x {float}]} %load1, 0, 0 %wrap2 = insertvalue {{}, {float}, (empty array)} poison, {float} %unwrap1, 1 store {{}, {float}, (empty array)} %wrap2, ptr %a2, align 4 %gep3 = gep ptr %a2, 4 x i32 0, 1 x i64 0, 1 x i64 0 %load3 = load <4 x i8>, ptr %gep3, align 4 %valcast1 = bitcast <4 x i8> %load3 to i32 %wrap3 = insertvalue [1 x [1 x i32]] poison, i32 %valcast1, 0, 0 %wrap4 = insertvalue {[1 x [1 x i32]], {}} poison, [1 x [1 x i32]] %wrap3, 0 %gep4 = gep ptr %a3, 8 x i32 0, 1 x i64 0 store {[1 x [1 x i32]], {}} %wrap4, ptr %gep4, align 4 %gep5 = gep ptr %a3, 8 x i32 0, 1 x i64 0, 1 x i64 0, 4 x i32 0 %load4 = load {{}, float, {}}, ptr %gep5, align 4 %unwrap2 = extractvalue {{}, float, {}} %load4, 1 %valcast2 = bitcast float %unwrap2 to i32 ret i32 %valcast2 } => define i32 @test22(i32 %x) denormal-fp-math=ieee,ieee { %entry: %wrap1 = insertvalue [1 x {i32}] poison, i32 %x, 0, 0 %wrap1.fca.0.0.extract = extractvalue [1 x {i32}] %wrap1, 0, 0 %0 = bitcast i32 %wrap1.fca.0.0.extract to float %load1.fca.0.0.0.insert = insertvalue {[1 x {float}]} poison, float %0, 0, 0, 0 %unwrap1 = extractvalue {[1 x {float}]} %load1.fca.0.0.0.insert, 0, 0 %wrap2 = insertvalue {{}, {float}, (empty array)} poison, {float} %unwrap1, 1 %wrap2.fca.1.0.extract = extractvalue {{}, {float}, (empty array)} %wrap2, 1, 0 %1 = bitcast float %wrap2.fca.1.0.extract to <4 x i8> %valcast1 = bitcast <4 x i8> %1 to i32 %wrap3 = insertvalue [1 x [1 x i32]] poison, i32 %valcast1, 0, 0 %wrap4 = insertvalue {[1 x [1 x i32]], {}} poison, [1 x [1 x i32]] %wrap3, 0 %wrap4.fca.0.0.0.extract = extractvalue {[1 x [1 x i32]], {}} %wrap4, 0, 0, 0 %2 = bitcast i32 %wrap4.fca.0.0.0.extract to <4 x i8> %3 = bitcast <4 x i8> %2 to float %load4.fca.1.insert = insertvalue {{}, float, {}} poison, float %3, 1 %unwrap2 = extractvalue {{}, float, {}} %load4.fca.1.insert, 1 %valcast2 = bitcast float %unwrap2 to i32 ret i32 %valcast2 } Transformation seems to be correct! ---------------------------------------- define void @PR14059.1(ptr %d) denormal-fp-math=ieee,ieee { %entry: %X.sroa.0.i = alloca i64 8, align 8, dead start_lifetime ptr %X.sroa.0.i store i32 0, ptr %X.sroa.0.i, align 8 %X.sroa.0.2.raw_idx2.i = gep inbounds ptr %X.sroa.0.i, 1 x i32 2 memset ptr %X.sroa.0.2.raw_idx2.i align 1, i8 0, i64 4 memset ptr %X.sroa.0.i align 1, i8 0, i64 8 %X.sroa.0.4.raw_idx4.i = gep inbounds ptr %X.sroa.0.i, 1 x i32 4 memcpy ptr %X.sroa.0.4.raw_idx4.i align 1, ptr %d align 1, i32 4 store i32 1072693248, ptr %X.sroa.0.4.raw_idx4.i, align 4 %X.sroa.0.0.load1.i = load double, ptr %X.sroa.0.i, align 8 %accum.real.i = load double, ptr %d, align 8 %add.r.i = fadd double %accum.real.i, %X.sroa.0.0.load1.i, exceptions=ignore store double %add.r.i, ptr %d, align 8 free ptr %X.sroa.0.i unconstrained ret void } => define void @PR14059.1(ptr %d) denormal-fp-math=ieee,ieee { %entry: %0 = bitcast double undef to i64 %X.sroa.0.i.0.insert.mask = and i64 %0, -4294967296 %X.sroa.0.i.0.insert.insert = or i64 %X.sroa.0.i.0.insert.mask, 0 %1 = bitcast i64 %X.sroa.0.i.0.insert.insert to double %2 = bitcast double %1 to i64 %X.sroa.0.i.2.insert.mask = and i64 %2, -281474976645121 %X.sroa.0.i.2.insert.insert = or i64 %X.sroa.0.i.2.insert.mask, 0 %X.sroa.0.i.4.copyload = load i32, ptr %d, align 1 %5 = bitcast double 0.000000 to i64 %X.sroa.0.i.4.insert.ext = zext i32 %X.sroa.0.i.4.copyload to i64 %X.sroa.0.i.4.insert.shift = shl i64 %X.sroa.0.i.4.insert.ext, 32 %X.sroa.0.i.4.insert.mask3 = and i64 %5, 4294967295 %X.sroa.0.i.4.insert.insert4 = or i64 %X.sroa.0.i.4.insert.mask3, %X.sroa.0.i.4.insert.shift %6 = bitcast i64 %X.sroa.0.i.4.insert.insert4 to double %7 = bitcast double %6 to i64 %X.sroa.0.i.4.insert.mask = and i64 %7, 4294967295 %X.sroa.0.i.4.insert.insert = or i64 %X.sroa.0.i.4.insert.mask, 4607182418800017408 %8 = bitcast i64 %X.sroa.0.i.4.insert.insert to double %accum.real.i = load double, ptr %d, align 8 %add.r.i = fadd double %accum.real.i, %8, exceptions=ignore store double %add.r.i, ptr %d, align 8 ret void } Transformation doesn't verify! ERROR: Mismatch in memory Example: ptr %d = pointer(non-local, block_id=1, offset=0) Source: ptr %X.sroa.0.i = pointer(local, block_id=2, offset=0) ptr %X.sroa.0.2.raw_idx2.i = pointer(local, block_id=2, offset=2) ptr %X.sroa.0.4.raw_idx4.i = pointer(local, block_id=2, offset=4) double %X.sroa.0.0.load1.i = #x3ff0000000000000 (1) double %accum.real.i = #x4007fffffff00100 (2.999999999534?) double %add.r.i = #x400ffffffff00100 (3.999999999534?) SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > size: 129 align: 16 alloc type: 0 LOCAL BLOCKS: Block 2 > size: 8 align: 8 alloc type: 1 Target: i64 %0 = #x7fffffffffffffff (9223372036854775807) [based on undef value] i64 %X.sroa.0.i.0.insert.mask = #x7fffffff00000000 (9223372032559808512) i64 %X.sroa.0.i.0.insert.insert = #x7fffffff00000000 (9223372032559808512) double %1 = NaN i64 %2 = #x7fffffffffffffff (9223372036854775807) i64 %X.sroa.0.i.2.insert.mask = #x7fff00000000ffff (9223090561878130687) i64 %X.sroa.0.i.2.insert.insert = #x7fff00000000ffff (9223090561878130687) i32 %X.sroa.0.i.4.copyload = #xfff00100 (4293918976, -1048320) i64 %5 = #x0000000000000000 (0) i64 %X.sroa.0.i.4.insert.ext = #x00000000fff00100 (4293918976) i64 %X.sroa.0.i.4.insert.shift = #xfff0010000000000 (18442241573593808896, -4502500115742720) i64 %X.sroa.0.i.4.insert.mask3 = #x0000000000000000 (0) i64 %X.sroa.0.i.4.insert.insert4 = #xfff0010000000000 (18442241573593808896, -4502500115742720) double %6 = NaN i64 %7 = #x7ff0000020000000 (9218868437764276224) i64 %X.sroa.0.i.4.insert.mask = #x0000000020000000 (536870912) i64 %X.sroa.0.i.4.insert.insert = #x3ff0000020000000 (4607182419336888320) double %8 = #x3ff0000020000000 (1.000000119209?) double %accum.real.i = #x4007fffffff00100 (2.999999999534?) double %add.r.i = #x4010000007f80080 (4.000000118743?) Mismatch in pointer(non-local, block_id=1, offset=0) Source value: #x00 Target value: #x80 ------------------- SMT STATS ------------------- Num queries: 71 Num invalid: 0 Num skips: 0 Num trivial: 143 (66.8%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 62 (87.3%) Num UNSAT: 9 (12.7%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -passes=sroa -S + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SROA/basictest.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SROA/basictest.ll