Test Failure: Transforms/SROA/basictest.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define i32 @test0() {
%entry:
  %a1 = alloca i64 4, align 4, dead
  %a2 = alloca i64 4, align 4, dead
  %a1.i8 = bitcast * %a1 to *
  start_lifetime * %a1.i8
  store i32 0, * %a1, align 4
  %v1 = load i32, * %a1, align 4
  free * %a1.i8 unconstrained
  %a2.i8 = bitcast * %a2 to *
  start_lifetime * %a2.i8
  store float 0.000000, * %a2, align 4
  %v2 = load float, * %a2, align 4
  %v2.int = bitcast float %v2 to i32
  %sum1 = add i32 %v1, %v2.int
  free * %a2.i8 unconstrained
  ret i32 %sum1
}
=>
define i32 @test0() {
%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() {
%entry:
  %X = alloca i64 8, align 8
  %Y = gep * %X, 8 x i64 0, 1 x i64 0
  store i32 0, * %Y, align 4
  %Z = load i32, * %Y, align 4
  ret i32 %Z
}
=>
define i32 @test1() {
%entry:
  ret i32 0
}
Transformation seems to be correct!


----------------------------------------
define i64 @test2(i64 %X) {
%entry:
  %A = alloca i64 8, align 1
  %B = bitcast * %A to *
  store i64 %X, * %B, align 4
  br label %L2

%L2:
  %Z = load i64, * %B, align 4
  ret i64 %Z
}
=>
define i64 @test2(i64 %X) {
%entry:
  br label %L2

%L2:
  ret i64 %X
}
Transformation seems to be correct!

ERROR: Unsupported instruction:   %B = addrspacecast [8 x i8]* %A to i64 addrspace(1)*
ERROR: Unsupported instruction:   %B = addrspacecast [256 x i8]* %A to i64 addrspace(1)*
ERROR: Unsupported instruction:   %B = addrspacecast [256 x i8]* %A to i64 addrspace(1)*
ERROR: Unsupported instruction:   %A.sroa.0.2.gepB.sroa_cast = addrspacecast i8* %A.sroa.0.2.gepB.sroa_idx to i64 addrspace(1)*
ERROR: Unsupported attribute: align 8
ERROR: Unsupported attribute: align 8

----------------------------------------
define void @test4(* %dst, * %src) {
%entry:
  %a = alloca i64 100, align 1
  %b = gep * %a, 100 x i64 0, 1 x i64 0
  memcpy * %b align 1, * %src align 1, i32 100
  %a.src.1 = gep * %a, 100 x i64 0, 1 x i64 20
  %a.dst.1 = gep * %a, 100 x i64 0, 1 x i64 40
  memcpy * %a.dst.1 align 1, * %a.src.1 align 1, i32 10
  %c = gep * %a, 100 x i64 0, 1 x i64 42
  store i8 0, * %c, align 1
  %a.src.2 = gep * %a, 100 x i64 0, 1 x i64 50
  memmove * %a.dst.1 align 1, * %a.src.2 align 1, i32 10
  memcpy * %dst align 1, * %b align 1, i32 100
  ret void
}
=>
define void @test4(* %dst, * %src) {
%entry:
  %a.sroa.0 = alloca i64 20, align 1
  %a.sroa.2.sroa.4 = alloca i64 7, align 1
  %a.sroa.3 = alloca i64 10, align 1
  %a.sroa.34.sroa.5 = alloca i64 7, align 1
  %a.sroa.6.sroa.4 = alloca i64 7, align 1
  %a.sroa.7 = alloca i64 40, align 1
  %a.sroa.0.0.b.sroa_idx = gep inbounds * %a.sroa.0, 20 x i64 0, 1 x i64 0
  memcpy * %a.sroa.0.0.b.sroa_idx align 1, * %src align 1, i32 20
  %a.sroa.2.sroa.0.0.a.sroa.2.0.src.sroa_raw_idx.sroa_idx = gep inbounds * %src, 1 x i64 20
  %a.sroa.2.sroa.0.0.a.sroa.2.0.src.sroa_raw_idx.sroa_cast = bitcast * %a.sroa.2.sroa.0.0.a.sroa.2.0.src.sroa_raw_idx.sroa_idx to *
  %a.sroa.2.sroa.0.0.copyload = load i16, * %a.sroa.2.sroa.0.0.a.sroa.2.0.src.sroa_raw_idx.sroa_cast, align 1
  %a.sroa.2.sroa.3.0.a.sroa.2.0.src.sroa_raw_idx.sroa_raw_idx = gep inbounds * %src, 1 x i64 22
  %a.sroa.2.sroa.3.0.copyload = load i8, * %a.sroa.2.sroa.3.0.a.sroa.2.0.src.sroa_raw_idx.sroa_raw_idx, align 1
  %a.sroa.2.sroa.4.0.a.sroa.2.0.src.sroa_raw_idx.sroa_raw_idx = gep inbounds * %src, 1 x i64 23
  %a.sroa.2.sroa.4.0.b.sroa_idx = gep inbounds * %a.sroa.2.sroa.4, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.2.sroa.4.0.b.sroa_idx align 1, * %a.sroa.2.sroa.4.0.a.sroa.2.0.src.sroa_raw_idx.sroa_raw_idx align 1, i32 7
  %a.sroa.3.0.src.sroa_raw_idx = gep inbounds * %src, 1 x i64 30
  %a.sroa.3.0.b.sroa_idx = gep inbounds * %a.sroa.3, 10 x i64 0, 1 x i64 0
  memcpy * %a.sroa.3.0.b.sroa_idx align 1, * %a.sroa.3.0.src.sroa_raw_idx align 1, i32 10
  %a.sroa.34.sroa.0.0.a.sroa.34.0.src.sroa_raw_idx.sroa_idx = gep inbounds * %src, 1 x i64 40
  %a.sroa.34.sroa.0.0.a.sroa.34.0.src.sroa_raw_idx.sroa_cast = bitcast * %a.sroa.34.sroa.0.0.a.sroa.34.0.src.sroa_raw_idx.sroa_idx to *
  %a.sroa.34.sroa.0.0.copyload = load i16, * %a.sroa.34.sroa.0.0.a.sroa.34.0.src.sroa_raw_idx.sroa_cast, align 1
  %a.sroa.34.sroa.4.0.a.sroa.34.0.src.sroa_raw_idx.sroa_raw_idx = gep inbounds * %src, 1 x i64 42
  %a.sroa.34.sroa.4.0.copyload = load i8, * %a.sroa.34.sroa.4.0.a.sroa.34.0.src.sroa_raw_idx.sroa_raw_idx, align 1
  %a.sroa.34.sroa.5.0.a.sroa.34.0.src.sroa_raw_idx.sroa_raw_idx = gep inbounds * %src, 1 x i64 43
  %a.sroa.34.sroa.5.0.b.sroa_idx = gep inbounds * %a.sroa.34.sroa.5, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.34.sroa.5.0.b.sroa_idx align 1, * %a.sroa.34.sroa.5.0.a.sroa.34.0.src.sroa_raw_idx.sroa_raw_idx align 1, i32 7
  %a.sroa.6.sroa.0.0.a.sroa.6.0.src.sroa_raw_idx.sroa_idx = gep inbounds * %src, 1 x i64 50
  %a.sroa.6.sroa.0.0.a.sroa.6.0.src.sroa_raw_idx.sroa_cast = bitcast * %a.sroa.6.sroa.0.0.a.sroa.6.0.src.sroa_raw_idx.sroa_idx to *
  %a.sroa.6.sroa.0.0.copyload = load i16, * %a.sroa.6.sroa.0.0.a.sroa.6.0.src.sroa_raw_idx.sroa_cast, align 1
  %a.sroa.6.sroa.3.0.a.sroa.6.0.src.sroa_raw_idx.sroa_raw_idx = gep inbounds * %src, 1 x i64 52
  %a.sroa.6.sroa.3.0.copyload = load i8, * %a.sroa.6.sroa.3.0.a.sroa.6.0.src.sroa_raw_idx.sroa_raw_idx, align 1
  %a.sroa.6.sroa.4.0.a.sroa.6.0.src.sroa_raw_idx.sroa_raw_idx = gep inbounds * %src, 1 x i64 53
  %a.sroa.6.sroa.4.0.b.sroa_idx = gep inbounds * %a.sroa.6.sroa.4, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.6.sroa.4.0.b.sroa_idx align 1, * %a.sroa.6.sroa.4.0.a.sroa.6.0.src.sroa_raw_idx.sroa_raw_idx align 1, i32 7
  %a.sroa.7.0.src.sroa_raw_idx = gep inbounds * %src, 1 x i64 60
  %a.sroa.7.0.b.sroa_idx = gep inbounds * %a.sroa.7, 40 x i64 0, 1 x i64 0
  memcpy * %a.sroa.7.0.b.sroa_idx align 1, * %a.sroa.7.0.src.sroa_raw_idx align 1, i32 40
  %a.sroa.2.sroa.4.3.a.sroa.34.sroa.5.0.a.dst.1.sroa_idx.sroa_idx = gep inbounds * %a.sroa.34.sroa.5, 7 x i64 0, 1 x i64 0
  %a.sroa.2.sroa.4.3.a.src.1.sroa_idx = gep inbounds * %a.sroa.2.sroa.4, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.2.sroa.4.3.a.sroa.34.sroa.5.0.a.dst.1.sroa_idx.sroa_idx align 1, * %a.sroa.2.sroa.4.3.a.src.1.sroa_idx align 1, i32 7
  %a.sroa.6.sroa.4.3.a.sroa.34.sroa.5.0.a.dst.1.sroa_idx16.sroa_idx = gep inbounds * %a.sroa.34.sroa.5, 7 x i64 0, 1 x i64 0
  %a.sroa.6.sroa.4.3.a.src.2.sroa_idx = gep inbounds * %a.sroa.6.sroa.4, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.6.sroa.4.3.a.sroa.34.sroa.5.0.a.dst.1.sroa_idx16.sroa_idx align 1, * %a.sroa.6.sroa.4.3.a.src.2.sroa_idx align 1, i32 7
  %a.sroa.0.0.b.sroa_idx1 = gep inbounds * %a.sroa.0, 20 x i64 0, 1 x i64 0
  memcpy * %dst align 1, * %a.sroa.0.0.b.sroa_idx1 align 1, i32 20
  %a.sroa.2.sroa.0.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_idx = gep inbounds * %dst, 1 x i64 20
  %a.sroa.2.sroa.0.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_cast = bitcast * %a.sroa.2.sroa.0.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_idx to *
  store i16 %a.sroa.2.sroa.0.0.copyload, * %a.sroa.2.sroa.0.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_cast, align 1
  %a.sroa.2.sroa.3.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_raw_idx = gep inbounds * %dst, 1 x i64 22
  store i8 %a.sroa.2.sroa.3.0.copyload, * %a.sroa.2.sroa.3.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_raw_idx, align 1
  %a.sroa.2.sroa.4.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_raw_idx = gep inbounds * %dst, 1 x i64 23
  %a.sroa.2.sroa.4.0.b.sroa_idx22 = gep inbounds * %a.sroa.2.sroa.4, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.2.sroa.4.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_raw_idx align 1, * %a.sroa.2.sroa.4.0.b.sroa_idx22 align 1, i32 7
  %a.sroa.3.0.dst.sroa_raw_idx = gep inbounds * %dst, 1 x i64 30
  %a.sroa.3.0.b.sroa_idx3 = gep inbounds * %a.sroa.3, 10 x i64 0, 1 x i64 0
  memcpy * %a.sroa.3.0.dst.sroa_raw_idx align 1, * %a.sroa.3.0.b.sroa_idx3 align 1, i32 10
  %a.sroa.34.sroa.0.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_idx = gep inbounds * %dst, 1 x i64 40
  %a.sroa.34.sroa.0.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_cast = bitcast * %a.sroa.34.sroa.0.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_idx to *
  store i16 %a.sroa.6.sroa.0.0.copyload, * %a.sroa.34.sroa.0.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_cast, align 1
  %a.sroa.34.sroa.4.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_raw_idx = gep inbounds * %dst, 1 x i64 42
  store i8 %a.sroa.6.sroa.3.0.copyload, * %a.sroa.34.sroa.4.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_raw_idx, align 1
  %a.sroa.34.sroa.5.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_raw_idx = gep inbounds * %dst, 1 x i64 43
  %a.sroa.34.sroa.5.0.b.sroa_idx15 = gep inbounds * %a.sroa.34.sroa.5, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.34.sroa.5.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_raw_idx align 1, * %a.sroa.34.sroa.5.0.b.sroa_idx15 align 1, i32 7
  %a.sroa.6.sroa.0.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_idx = gep inbounds * %dst, 1 x i64 50
  %a.sroa.6.sroa.0.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_cast = bitcast * %a.sroa.6.sroa.0.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_idx to *
  store i16 %a.sroa.6.sroa.0.0.copyload, * %a.sroa.6.sroa.0.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_cast, align 1
  %a.sroa.6.sroa.3.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_raw_idx = gep inbounds * %dst, 1 x i64 52
  store i8 %a.sroa.6.sroa.3.0.copyload, * %a.sroa.6.sroa.3.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_raw_idx, align 1
  %a.sroa.6.sroa.4.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_raw_idx = gep inbounds * %dst, 1 x i64 53
  %a.sroa.6.sroa.4.0.b.sroa_idx19 = gep inbounds * %a.sroa.6.sroa.4, 7 x i64 0, 1 x i64 0
  memcpy * %a.sroa.6.sroa.4.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_raw_idx align 1, * %a.sroa.6.sroa.4.0.b.sroa_idx19 align 1, i32 7
  %a.sroa.7.0.dst.sroa_raw_idx = gep inbounds * %dst, 1 x i64 60
  %a.sroa.7.0.b.sroa_idx8 = gep inbounds * %a.sroa.7, 40 x i64 0, 1 x i64 0
  memcpy * %a.sroa.7.0.dst.sroa_raw_idx align 1, * %a.sroa.7.0.b.sroa_idx8 align 1, i32 40
  ret void
}
Transformation doesn't verify!
ERROR: Mismatch in memory

Example:
* %dst = pointer(non-local, block_id=1, offset=0)
* %src = pointer(non-local, block_id=1, offset=0)

Source:
* %a = pointer(local, block_id=8, offset=0)
* %b = pointer(local, block_id=8, offset=0)
* %a.src.1 = pointer(local, block_id=8, offset=20)
* %a.dst.1 = pointer(local, block_id=8, offset=40)
* %c = pointer(local, block_id=8, offset=42)
* %a.src.2 = pointer(local, block_id=8, offset=50)

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >	size: 0	align: 64	alloc type: 0
Block 1 >	size: 512	align: 4	alloc type: 0
Block 2 >	align: 2	alloc type: 0

LOCAL BLOCKS:
Block 8 >	size: 100	align: 1	alloc type: 0
Block 9 >	size: 512	align: 4	alloc type: 0
Block 10 >	align: 2	alloc type: 0
Block 11 >	align: 64	alloc type: 0
Block 12 >	align: 64	alloc type: 0
Block 13 >	align: 64	alloc type: 0

Target:
* %a.sroa.0 = pointer(local, block_id=8, offset=0)
* %a.sroa.2.sroa.4 = pointer(local, block_id=9, offset=0)
* %a.sroa.3 = pointer(local, block_id=10, offset=0)
* %a.sroa.34.sroa.5 = pointer(local, block_id=11, offset=0)
* %a.sroa.6.sroa.4 = pointer(local, block_id=12, offset=0)
* %a.sroa.7 = pointer(local, block_id=13, offset=0)
* %a.sroa.0.0.b.sroa_idx = pointer(local, block_id=8, offset=0)
* %a.sroa.2.sroa.0.0.a.sroa.2.0.src.sroa_raw_idx.sroa_idx = pointer(non-local, block_id=1, offset=20)
* %a.sroa.2.sroa.0.0.a.sroa.2.0.src.sroa_raw_idx.sroa_cast = pointer(non-local, block_id=1, offset=20)
i16 %a.sroa.2.sroa.0.0.copyload = poison
* %a.sroa.2.sroa.3.0.a.sroa.2.0.src.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=22)
i8 %a.sroa.2.sroa.3.0.copyload = poison
* %a.sroa.2.sroa.4.0.a.sroa.2.0.src.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=23)
* %a.sroa.2.sroa.4.0.b.sroa_idx = pointer(local, block_id=9, offset=0)
* %a.sroa.3.0.src.sroa_raw_idx = pointer(non-local, block_id=1, offset=30)
* %a.sroa.3.0.b.sroa_idx = pointer(local, block_id=10, offset=0)
* %a.sroa.34.sroa.0.0.a.sroa.34.0.src.sroa_raw_idx.sroa_idx = pointer(non-local, block_id=1, offset=40)
* %a.sroa.34.sroa.0.0.a.sroa.34.0.src.sroa_raw_idx.sroa_cast = pointer(non-local, block_id=1, offset=40)
i16 %a.sroa.34.sroa.0.0.copyload = poison
* %a.sroa.34.sroa.4.0.a.sroa.34.0.src.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=42)
i8 %a.sroa.34.sroa.4.0.copyload = poison
* %a.sroa.34.sroa.5.0.a.sroa.34.0.src.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=43)
* %a.sroa.34.sroa.5.0.b.sroa_idx = pointer(local, block_id=11, offset=0)
* %a.sroa.6.sroa.0.0.a.sroa.6.0.src.sroa_raw_idx.sroa_idx = pointer(non-local, block_id=1, offset=50)
* %a.sroa.6.sroa.0.0.a.sroa.6.0.src.sroa_raw_idx.sroa_cast = pointer(non-local, block_id=1, offset=50)
i16 %a.sroa.6.sroa.0.0.copyload = poison
* %a.sroa.6.sroa.3.0.a.sroa.6.0.src.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=52)
i8 %a.sroa.6.sroa.3.0.copyload = poison
* %a.sroa.6.sroa.4.0.a.sroa.6.0.src.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=53)
* %a.sroa.6.sroa.4.0.b.sroa_idx = pointer(local, block_id=12, offset=0)
* %a.sroa.7.0.src.sroa_raw_idx = pointer(non-local, block_id=1, offset=60)
* %a.sroa.7.0.b.sroa_idx = pointer(local, block_id=13, offset=0)
* %a.sroa.2.sroa.4.3.a.sroa.34.sroa.5.0.a.dst.1.sroa_idx.sroa_idx = pointer(local, block_id=11, offset=0)
* %a.sroa.2.sroa.4.3.a.src.1.sroa_idx = pointer(local, block_id=9, offset=0)
* %a.sroa.6.sroa.4.3.a.sroa.34.sroa.5.0.a.dst.1.sroa_idx16.sroa_idx = pointer(local, block_id=11, offset=0)
* %a.sroa.6.sroa.4.3.a.src.2.sroa_idx = pointer(local, block_id=12, offset=0)
* %a.sroa.0.0.b.sroa_idx1 = pointer(local, block_id=8, offset=0)
* %a.sroa.2.sroa.0.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_idx = pointer(non-local, block_id=1, offset=20)
* %a.sroa.2.sroa.0.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_cast = pointer(non-local, block_id=1, offset=20)
* %a.sroa.2.sroa.3.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=22)
* %a.sroa.2.sroa.4.0.a.sroa.2.0.dst.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=23)
* %a.sroa.2.sroa.4.0.b.sroa_idx22 = pointer(local, block_id=9, offset=0)
* %a.sroa.3.0.dst.sroa_raw_idx = pointer(non-local, block_id=1, offset=30)
* %a.sroa.3.0.b.sroa_idx3 = pointer(local, block_id=10, offset=0)
* %a.sroa.34.sroa.0.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_idx = pointer(non-local, block_id=1, offset=40)
* %a.sroa.34.sroa.0.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_cast = pointer(non-local, block_id=1, offset=40)
* %a.sroa.34.sroa.4.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=42)
* %a.sroa.34.sroa.5.0.a.sroa.34.0.dst.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=43)
* %a.sroa.34.sroa.5.0.b.sroa_idx15 = pointer(local, block_id=11, offset=0)
* %a.sroa.6.sroa.0.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_idx = pointer(non-local, block_id=1, offset=50)
* %a.sroa.6.sroa.0.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_cast = pointer(non-local, block_id=1, offset=50)
* %a.sroa.6.sroa.3.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=52)
* %a.sroa.6.sroa.4.0.a.sroa.6.0.dst.sroa_raw_idx.sroa_raw_idx = pointer(non-local, block_id=1, offset=53)
* %a.sroa.6.sroa.4.0.b.sroa_idx19 = pointer(local, block_id=12, offset=0)
* %a.sroa.7.0.dst.sroa_raw_idx = pointer(non-local, block_id=1, offset=60)
* %a.sroa.7.0.b.sroa_idx8 = pointer(local, block_id=13, offset=0)

TARGET MEMORY STATE
===================
LOCAL BLOCKS:
Block 8 >	size: 20	align: 1	alloc type: 0
Block 9 >	size: 7	align: 1	alloc type: 0
Block 10 >	size: 10	align: 1	alloc type: 0
Block 11 >	size: 7	align: 1	alloc type: 0
Block 12 >	size: 7	align: 1	alloc type: 0
Block 13 >	size: 40	align: 1	alloc type: 0

Mismatch in pointer(non-local, block_id=1, offset=22)
Source value: null, byte offset=0
Target value: poison


------------------- SMT STATS -------------------
Num queries: 7
Num invalid: 0
Num skips:   0
Num trivial: 17 (70.8%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     5 (71.4%)
Num UNSAT:   2 (28.6%)

stderr:

+ : 'RUN: at line 1'
+ /home/nlopes/alive2/scripts/opt-alive.sh -sroa -S
+ /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/SROA/basictest.ll

Alive2: Transform doesn't verify; aborting!
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/SROA/basictest.ll

 

<-- Back