Test Failure: Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll

Test source: git

Log:

Source: /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll
-- 1. Annotation2MetadataPass
ERROR: Unsupported attribute: noalias
-- 2. Annotation2MetadataPass
ERROR: Unsupported attribute: noalias

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i64 @strlen(ptr)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i1 @test2_fn4(i8 %bf.load) {
entry:
  %tobool = icmp slt i8 %bf.load, 0
  ret i1 %tobool
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @test2_fn6()
declare i1 @test2_fn4(i8)

define i32 @test2_fn5() {
entry:
  %call8 = call i32 @test2_fn6()
  %trunc = trunc i32 %call8 to i8
  %call1 = call i1 @test2_fn4(i8 %trunc)
  %#0 = xor i1 %call1, 1
  assume i1 %#0
  ret i32 %call8
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @memcmp(ptr, ptr, i64)

@.str.79 = constant 14 bytes, align 1

define i32 @test2_fn6() {
init:
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  br label %entry

entry:
  %call = memcmp ptr @.str.79, ptr @.str.79, i64 2
  ret i32 %call
}
Transformation seems to be correct! (syntactically equal)

-- 3. ForceFunctionAttrsPass
ERROR: Unsupported attribute: noalias

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i64 @strlen(ptr)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i1 @test2_fn4(i8 %bf.load) {
entry:
  %tobool = icmp slt i8 %bf.load, 0
  ret i1 %tobool
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @test2_fn6()
declare i1 @test2_fn4(i8)

define i32 @test2_fn5() {
entry:
  %call8 = call i32 @test2_fn6()
  %trunc = trunc i32 %call8 to i8
  %call1 = call i1 @test2_fn4(i8 %trunc)
  %#0 = xor i1 %call1, 1
  assume i1 %#0
  ret i32 %call8
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @memcmp(ptr, ptr, i64)

@.str.79 = constant 14 bytes, align 1

define i32 @test2_fn6() {
init:
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  br label %entry

entry:
  %call = memcmp ptr @.str.79, ptr @.str.79, i64 2
  ret i32 %call
}
Transformation seems to be correct! (syntactically equal)

-- 4. ForceFunctionAttrsPass
ERROR: Unsupported attribute: noalias

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i64 @strlen(ptr)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i1 @test2_fn4(i8 %bf.load) {
entry:
  %tobool = icmp slt i8 %bf.load, 0
  ret i1 %tobool
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @test2_fn6()
declare i1 @test2_fn4(i8)

define i32 @test2_fn5() {
entry:
  %call8 = call i32 @test2_fn6()
  %trunc = trunc i32 %call8 to i8
  %call1 = call i1 @test2_fn4(i8 %trunc)
  %#0 = xor i1 %call1, 1
  assume i1 %#0
  ret i32 %call8
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @memcmp(ptr, ptr, i64)

@.str.79 = constant 14 bytes, align 1

define i32 @test2_fn6() {
init:
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  br label %entry

entry:
  %call = memcmp ptr @.str.79, ptr @.str.79, i64 2
  ret i32 %call
}
Transformation seems to be correct! (syntactically equal)

-- 5. InferFunctionAttrsPass : Skipping unsupported
ERROR: Unsupported attribute: noalias
-- 6. InferFunctionAttrsPass : Skipping unsupported
ERROR: Unsupported attribute: noalias
-- 7. CoroEarlyPass
ERROR: Unsupported attribute: noalias

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i1 @test2_fn4(i8 %bf.load) {
entry:
  %tobool = icmp slt i8 %bf.load, 0
  ret i1 %tobool
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @test2_fn6()
declare i1 @test2_fn4(i8)

define i32 @test2_fn5() {
entry:
  %call8 = call i32 @test2_fn6()
  %trunc = trunc i32 %call8 to i8
  %call1 = call i1 @test2_fn4(i8 %trunc)
  %#0 = xor i1 %call1, 1
  assume i1 %#0
  ret i32 %call8
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @memcmp(nocapture ptr, nocapture ptr, i64) nofree willreturn memory(argmem: read)

@.str.79 = constant 14 bytes, align 1

define i32 @test2_fn6() {
init:
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  br label %entry

entry:
  %call = memcmp ptr @.str.79, ptr @.str.79, i64 2
  ret i32 %call
}
Transformation seems to be correct! (syntactically equal)

-- 8. CoroEarlyPass
ERROR: Unsupported attribute: noalias

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i1 @test2_fn4(i8 %bf.load) {
entry:
  %tobool = icmp slt i8 %bf.load, 0
  ret i1 %tobool
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @test2_fn6()
declare i1 @test2_fn4(i8)

define i32 @test2_fn5() {
entry:
  %call8 = call i32 @test2_fn6()
  %trunc = trunc i32 %call8 to i8
  %call1 = call i1 @test2_fn4(i8 %trunc)
  %#0 = xor i1 %call1, 1
  assume i1 %#0
  ret i32 %call8
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @memcmp(nocapture ptr, nocapture ptr, i64) nofree willreturn memory(argmem: read)

@.str.79 = constant 14 bytes, align 1

define i32 @test2_fn6() {
init:
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  br label %entry

entry:
  %call = memcmp ptr @.str.79, ptr @.str.79, i64 2
  ret i32 %call
}
Transformation seems to be correct! (syntactically equal)

-- 9. ModuleToFunctionPassAdaptor
ERROR: Unsupported attribute: noalias

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i1 @test2_fn4(i8 %bf.load) {
entry:
  %tobool = icmp slt i8 %bf.load, 0
  ret i1 %tobool
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @test2_fn6()
declare i1 @test2_fn4(i8)

define i32 @test2_fn5() {
entry:
  %call8 = call i32 @test2_fn6()
  %trunc = trunc i32 %call8 to i8
  %call1 = call i1 @test2_fn4(i8 %trunc)
  %#0 = xor i1 %call1, 1
  assume i1 %#0
  ret i32 %call8
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare i32 @memcmp(nocapture ptr, nocapture ptr, i64) nofree willreturn memory(argmem: read)

@.str.79 = constant 14 bytes, align 1

define i32 @test2_fn6() {
init:
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  br label %entry

entry:
  %call = memcmp ptr @.str.79, ptr @.str.79, i64 2
  ret i32 %call
}
Transformation seems to be correct! (syntactically equal)

-- 1. PassManager<Function> : Skipping NOP
ERROR: Unsupported attribute: noalias
-- 2. EntryExitInstrumenterPass : Skipping unsupported
ERROR: Unsupported attribute: noalias
-- 3. EntryExitInstrumenterPass : Skipping unsupported
ERROR: Unsupported attribute: noalias
-- 4. LowerExpectIntrinsicPass
ERROR: Unsupported attribute: noalias
-- 5. LowerExpectIntrinsicPass
ERROR: Unsupported attribute: noalias
-- 6. SimplifyCFGPass
ERROR: Unsupported attribute: noalias
-- 7. SimplifyCFGPass
ERROR: Unsupported attribute: noalias
-- 8. SROAPass
ERROR: Unsupported attribute: noalias
-- 9. SROAPass
ERROR: Unsupported attribute: noalias
-- 10. EarlyCSEPass
ERROR: Unsupported attribute: noalias
-- 11. EarlyCSEPass
ERROR: Unsupported attribute: noalias
-- 12. PassManager<Function> : Skipping NOP
ERROR: Unsupported attribute: noalias
-- 13. PassManager<Function> : Skipping NOP
-- 14. EntryExitInstrumenterPass : Skipping unsupported
-- 15. EntryExitInstrumenterPass : Skipping unsupported
-- 16. LowerExpectIntrinsicPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 17. LowerExpectIntrinsicPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 18. SimplifyCFGPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 19. SimplifyCFGPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 20. SROAPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 21. SROAPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 22. EarlyCSEPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 23. EarlyCSEPass

----------------------------------------
declare i1 @test2_fn2(ptr)

@.str.78 = constant 12 bytes, align 1
@.str.79 = constant 14 bytes, align 1
@.str.80 = constant 18 bytes, align 16

define void @test2(ptr %this) {
init:
  store [12 x i8] { 45, 45, 116, 101, 115, 116, 45, 105, 110, 102, 111, 0 }, ptr @.str.78, align 1
  store [14 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 105, 110, 102, 111, 0 }, ptr @.str.79, align 1
  store [18 x i8] { 45, 45, 116, 101, 115, 116, 45, 110, 111, 99, 111, 109, 112, 114, 101, 115, 115, 0 }, ptr @.str.80, align 16
  br label %entry

entry:
  %call16 = call i1 @test2_fn2(ptr @.str.78)
  %call17 = call i1 @test2_fn2(ptr @.str.79)
  br i1 %call17, label %if.then18, label %if.else21

if.else21:
  %call22 = call i1 @test2_fn2(ptr @.str.80)
  br label %common.ret

if.then18:
  %call19 = call i1 @test2_fn2(ptr @.str.78)
  %frombool20 = zext i1 %call19 to i8
  store i8 %frombool20, ptr %this, align 4
  br label %common.ret

common.ret:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 24. PassManager<Function> : Skipping NOP
-- 25. PassManager<Function> : Skipping NOP
-- 26. EntryExitInstrumenterPass : Skipping unsupported
-- 27. EntryExitInstrumenterPass : Skipping unsupported
-- 28. LowerExpectIntrinsicPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 29. LowerExpectIntrinsicPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 30. SimplifyCFGPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 31. SimplifyCFGPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 32. SROAPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 33. SROAPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 34. EarlyCSEPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 35. EarlyCSEPass

----------------------------------------
declare i64 @strlen(nocapture ptr) nofree willreturn memory(argmem: read)
declare i64 @test2_fn3(dereferenceable(24) align(8) ptr)
declare i32 @test2_fn5()

define i1 @test2_fn2(ptr %__rhs) {
entry:
  %call = strlen ptr %__rhs
  %call1 = call i64 @test2_fn3(dereferenceable(24) align(8) ptr null)
  %cmp2.not = icmp eq i64 %call, %call1
  br i1 %cmp2.not, label %if.end, label %cleanup

if.end:
  %call3 = call i32 @test2_fn5()
  %cmp4 = icmp eq i32 %call3, 0
  br label %cleanup

cleanup:
  %retval.0 = phi i1 [ %cmp4, %if.end ], [ 0, %entry ]
  ret i1 %retval.0
}
Transformation seems to be correct! (syntactically equal)

-- 36. PassManager<Function> : Skipping NOP
-- 37. PassManager<Function> : Skipping NOP
-- 38. EntryExitInstrumenterPass : Skipping unsupported
-- 39. EntryExitInstrumenterPass : Skipping unsupported
-- 40. LowerExpectIntrinsicPass

----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)

-- 41. LowerExpectIntrinsicPass

----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)

-- 42. SimplifyCFGPass

----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 1
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
Transformation seems to be correct! (syntactically equal)

-- 43. SimplifyCFGPass

----------------------------------------
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 8
  %call1 = call i1 @test2_fn4(i8 %l)
  br i1 %call1, label %cond.true, label %cond.end

cond.true:
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  br label %cond.end

cond.end:
  %cond = phi i64 [ %call2, %cond.true ], [ 0, %entry ]
  ret i64 %cond
}
=>
declare i1 @test2_fn4(i8)

define i64 @test2_fn3(ptr dereferenceable(24) align(8) %this) {
entry:
  %l = load i8, ptr dereferenceable(24) align(8) %this, align 8
  %call1 = call i1 @test2_fn4(i8 %l)
  %__size_ = gep ptr dereferenceable(24) align(8) %this, 24 x i64 0, 1 x i64 8
  %call2 = load i64, ptr %__size_, align 8
  %cond = select i1 %call1, i64 %call2, i64 0
  ret i64 %cond
}
Transformation doesn't verify! (unsound)
ERROR: Source is more defined than target

Example:
ptr dereferenceable(24) align(8) %this = pointer(non-local, block_id=1, offset=0) / Address=#x08

Source:
i8 %l = poison
i1 %call1 = #x0 (0)
  >> Jump to %cond.end
i64 %cond = #x0000000000000000 (0)

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >	size: 0	align: 1	alloc type: 0	alive: false	address: 0
Block 1 >	size: 128	align: 8	alloc type: 2	alive: false	address: 8
Block 2 >	size: 1	align: 2	alloc type: 0	alive: true	address: 4

Target:
i8 %l = poison
i1 %call1 = #x0 (0)
ptr %__size_ = pointer(non-local, block_id=1, offset=8) / Address=#x10
i64 %call2 = UB triggered!


Pass: SimplifyCFGPass
Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-passes=default<O2>' '-S' '/bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/constraint-elimination-placement_7BCiCD9x_805r.bc"


------------------- SMT STATS -------------------
Num queries: 33
Num invalid: 0
Num skips:   0
Num trivial: 5 (13.2%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     21 (63.6%)
Num UNSAT:   12 (36.4%)
Alive2: Transform doesn't verify; aborting!

stderr:

RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh -passes='default<O2>' -S /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll
+ /home/nlopes/alive2/build/opt-alive.sh '-passes=default<O2>' -S /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/PhaseOrdering/AArch64/constraint-elimination-placement.ll

 

<-- Back