Test source: git
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%)
+ : '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