Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. LowerConstantIntrinsicsPass ---------------------------------------- declare ptr @malloc(noundef i64) noundef noalias allocsize(0) @buffer = global 4 bytes, align 1 define i64 @pick_max(i32 noundef %n) { entry: %cond = icmp eq i32 noundef %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %malloced = call ptr @malloc(noundef i64 8) nofree noundef nothrow noalias willreturn dereferenceable_or_null(8) alloc-family(malloc) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite) br label %if.end if.end: %p = phi ptr [ %malloced, %if.else ], [ @buffer, %entry ] %size = objectsize ptr %p, i1 0, i1 1 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 3. LowerConstantIntrinsicsPass ---------------------------------------- declare ptr @malloc(noundef i64) noundef noalias allocsize(0) @buffer = global 4 bytes, align 1 define i64 @pick_max(i32 noundef %n) { entry: %cond = icmp eq i32 noundef %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %malloced = call ptr @malloc(noundef i64 8) nofree noundef nothrow noalias willreturn dereferenceable_or_null(8) alloc-family(malloc) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite) br label %if.end if.end: %p = phi ptr [ %malloced, %if.else ], [ @buffer, %entry ] %size = objectsize ptr %p, i1 0, i1 1 ret i64 %size } => declare ptr @malloc(noundef i64) noundef noalias allocsize(0) @buffer = global 4 bytes, align 1 define i64 @pick_max(i32 noundef %n) { entry: %cond = icmp eq i32 noundef %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %malloced = call ptr @malloc(noundef i64 8) nofree noundef nothrow noalias willreturn dereferenceable_or_null(8) alloc-family(malloc) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite) br label %if.end if.end: ret i64 8 } Transformation seems to be correct! -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. LowerConstantIntrinsicsPass ---------------------------------------- declare ptr @malloc(noundef i64) noundef noalias allocsize(0) @buffer = global 4 bytes, align 1 define i64 @pick_min(i32 noundef %n) { entry: %cond = icmp eq i32 noundef %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %malloced = call ptr @malloc(noundef i64 8) nofree noundef nothrow noalias willreturn dereferenceable_or_null(8) alloc-family(malloc) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite) br label %if.end if.end: %p = phi ptr [ %malloced, %if.else ], [ @buffer, %entry ] %size = objectsize ptr %p, i1 1, i1 1 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 7. LowerConstantIntrinsicsPass ---------------------------------------- declare ptr @malloc(noundef i64) noundef noalias allocsize(0) @buffer = global 4 bytes, align 1 define i64 @pick_min(i32 noundef %n) { entry: %cond = icmp eq i32 noundef %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %malloced = call ptr @malloc(noundef i64 8) nofree noundef nothrow noalias willreturn dereferenceable_or_null(8) alloc-family(malloc) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite) br label %if.end if.end: %p = phi ptr [ %malloced, %if.else ], [ @buffer, %entry ] %size = objectsize ptr %p, i1 1, i1 1 ret i64 %size } => declare ptr @malloc(noundef i64) noundef noalias allocsize(0) @buffer = global 4 bytes, align 1 define i64 @pick_min(i32 noundef %n) { entry: %cond = icmp eq i32 noundef %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %malloced = call ptr @malloc(noundef i64 8) nofree noundef nothrow noalias willreturn dereferenceable_or_null(8) alloc-family(malloc) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite) br label %if.end if.end: ret i64 4 } Transformation seems to be correct! -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_max_same(i32 %n) { entry: %buffer = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %offseted = gep ptr %buffer, 1 x i64 10 br label %if.end if.end: %p = phi ptr [ %offseted, %if.else ], [ %buffer, %entry ] %size = objectsize ptr %p, i1 0, i1 1 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 11. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_max_same(i32 %n) { entry: %buffer = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %offseted = gep ptr %buffer, 1 x i64 10 br label %if.end if.end: %p = phi ptr [ %offseted, %if.else ], [ %buffer, %entry ] %size = objectsize ptr %p, i1 0, i1 1 ret i64 %size } => define i64 @pick_max_same(i32 %n) { entry: %buffer = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: ret i64 20 } Transformation seems to be correct! -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_min_same(i32 %n) { entry: %buffer = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %offseted = gep ptr %buffer, 1 x i64 10 br label %if.end if.end: %p = phi ptr [ %offseted, %if.else ], [ %buffer, %entry ] %size = objectsize ptr %p, i1 1, i1 1 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 15. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_min_same(i32 %n) { entry: %buffer = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %offseted = gep ptr %buffer, 1 x i64 10 br label %if.end if.end: %p = phi ptr [ %offseted, %if.else ], [ %buffer, %entry ] %size = objectsize ptr %p, i1 1, i1 1 ret i64 %size } => define i64 @pick_min_same(i32 %n) { entry: %buffer = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: ret i64 10 } Transformation seems to be correct! -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_max_large(i1 %c) { #0: %buffer = alloca i64 1 x i64 -7, align 1 %s = select i1 %c, ptr null, ptr %buffer %objsize = objectsize ptr %s, i1 0, i1 0 ret i64 %objsize } Transformation seems to be correct! (syntactically equal) -- 19. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_max_large(i1 %c) { #0: %buffer = alloca i64 1 x i64 -7, align 1 %s = select i1 %c, ptr null, ptr %buffer %objsize = objectsize ptr %s, i1 0, i1 0 ret i64 %objsize } => define i64 @pick_max_large(i1 %c) { #0: %buffer = alloca i64 1 x i64 -7, align 1 ret i64 -1 } **************************************** WARNING: Source function is always UB. It can be refined by any target function. Please make sure this is what you wanted. **************************************** Transformation seems to be correct! -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_max_one_oob(i1 %c0, i1 %c1) { #0: %p = alloca i64 2, align 1 br i1 %c0, label %if.then, label %if.else if.else: %p.else = gep inbounds ptr %p, 2 x i64 0, 1 x i64 -1 br label %if.end if.then: %p.then = gep inbounds ptr %p, 2 x i64 0, 1 x i64 1 br label %if.end if.end: %p.end = phi ptr [ %p.else, %if.else ], [ %p.then, %if.then ] %objsize.max = objectsize ptr %p.end, i1 0, i1 1 %objsize.min = objectsize ptr %p.end, i1 1, i1 1 %objsize = select i1 %c1, i64 %objsize.max, i64 %objsize.min ret i64 %objsize } Transformation seems to be correct! (syntactically equal) -- 23. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_max_one_oob(i1 %c0, i1 %c1) { #0: %p = alloca i64 2, align 1 br i1 %c0, label %if.then, label %if.else if.else: %p.else = gep inbounds ptr %p, 2 x i64 0, 1 x i64 -1 br label %if.end if.then: %p.then = gep inbounds ptr %p, 2 x i64 0, 1 x i64 1 br label %if.end if.end: %p.end = phi ptr [ %p.else, %if.else ], [ %p.then, %if.then ] %objsize.max = objectsize ptr %p.end, i1 0, i1 1 %objsize.min = objectsize ptr %p.end, i1 1, i1 1 %objsize = select i1 %c1, i64 %objsize.max, i64 %objsize.min ret i64 %objsize } => define i64 @pick_max_one_oob(i1 %c0, i1 %c1) { #0: %p = alloca i64 2, align 1 br i1 %c0, label %if.then, label %if.else if.else: br label %if.end if.then: br label %if.end if.end: %objsize = select i1 %c1, i64 -1, i64 0 ret i64 %objsize } Transformation seems to be correct! -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %offseted0 = gep ptr %buffer0, 1 x i64 20 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %buffer1 = alloca i64 1 x i64 20, align 1 %offseted1 = gep ptr %buffer1, 1 x i64 20 br label %if.end if.end: %p = phi ptr [ %offseted1, %if.else ], [ %offseted0, %entry ] %poffseted = gep ptr %p, 1 x i64 -4 %size = objectsize ptr %poffseted, i1 0, i1 0 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 27. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %offseted0 = gep ptr %buffer0, 1 x i64 20 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %buffer1 = alloca i64 1 x i64 20, align 1 %offseted1 = gep ptr %buffer1, 1 x i64 20 br label %if.end if.end: %p = phi ptr [ %offseted1, %if.else ], [ %offseted0, %entry ] %poffseted = gep ptr %p, 1 x i64 -4 %size = objectsize ptr %poffseted, i1 0, i1 0 ret i64 %size } => define i64 @pick_negative_offset(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: %buffer1 = alloca i64 1 x i64 20, align 1 br label %if.end if.end: ret i64 4 } Transformation seems to be correct! -- 28. PassManager<Function> : Skipping NOP -- 29. PassManager<Function> : Skipping NOP -- 30. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset_different_width(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 4, align 1 %buffer1 = alloca i64 1 x i64 8, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.then, label %if.else if.else: %offseted1 = gep ptr %buffer1, 1 x i64 6 br label %if.end if.then: %offseted0 = gep ptr %buffer0, 1 x i64 1 br label %if.end if.end: %p = phi ptr [ %offseted0, %if.then ], [ %offseted1, %if.else ] %poffseted = gep ptr %p, 1 x i64 -2 %size = objectsize ptr %poffseted, i1 0, i1 0 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 31. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset_different_width(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 4, align 1 %buffer1 = alloca i64 1 x i64 8, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.then, label %if.else if.else: %offseted1 = gep ptr %buffer1, 1 x i64 6 br label %if.end if.then: %offseted0 = gep ptr %buffer0, 1 x i64 1 br label %if.end if.end: %p = phi ptr [ %offseted0, %if.then ], [ %offseted1, %if.else ] %poffseted = gep ptr %p, 1 x i64 -2 %size = objectsize ptr %poffseted, i1 0, i1 0 ret i64 %size } => define i64 @pick_negative_offset_different_width(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 4, align 1 %buffer1 = alloca i64 1 x i64 8, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.then, label %if.else if.else: br label %if.end if.then: br label %if.end if.end: ret i64 5 } Transformation seems to be correct! -- 32. PassManager<Function> : Skipping NOP -- 33. PassManager<Function> : Skipping NOP -- 34. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset_with_nullptr(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %offseted0 = gep ptr %buffer0, 1 x i64 20 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: %p0 = phi ptr [ %offseted0, %entry ], [ null, %if.else ] %p1 = phi ptr [ null, %if.else ], [ %offseted0, %entry ] %p0offseted = gep ptr %p0, 1 x i64 -4 %p1offseted = gep ptr %p1, 1 x i64 -4 %size0 = objectsize ptr %p0offseted, i1 0, i1 0 %size1 = objectsize ptr %p1offseted, i1 0, i1 0 %size = select i1 %cond, i64 %size0, i64 %size1 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 35. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset_with_nullptr(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %offseted0 = gep ptr %buffer0, 1 x i64 20 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: %p0 = phi ptr [ %offseted0, %entry ], [ null, %if.else ] %p1 = phi ptr [ null, %if.else ], [ %offseted0, %entry ] %p0offseted = gep ptr %p0, 1 x i64 -4 %p1offseted = gep ptr %p1, 1 x i64 -4 %size0 = objectsize ptr %p0offseted, i1 0, i1 0 %size1 = objectsize ptr %p1offseted, i1 0, i1 0 %size = select i1 %cond, i64 %size0, i64 %size1 ret i64 %size } => define i64 @pick_negative_offset_with_nullptr(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: ret i64 4 } Transformation seems to be correct! -- 36. PassManager<Function> : Skipping NOP -- 37. PassManager<Function> : Skipping NOP -- 38. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset_with_unsized_nullptr(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %offseted0 = gep ptr %buffer0, 1 x i64 20 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: %p0 = phi ptr [ %offseted0, %entry ], [ null, %if.else ] %p1 = phi ptr [ null, %if.else ], [ %offseted0, %entry ] %p0offseted = gep ptr %p0, 1 x i64 -4 %p1offseted = gep ptr %p1, 1 x i64 -4 %size0 = objectsize ptr %p0offseted, i1 0, i1 1 %size1 = objectsize ptr %p1offseted, i1 0, i1 1 %size = select i1 %cond, i64 %size0, i64 %size1 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 39. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @pick_negative_offset_with_unsized_nullptr(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %offseted0 = gep ptr %buffer0, 1 x i64 20 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: %p0 = phi ptr [ %offseted0, %entry ], [ null, %if.else ] %p1 = phi ptr [ null, %if.else ], [ %offseted0, %entry ] %p0offseted = gep ptr %p0, 1 x i64 -4 %p1offseted = gep ptr %p1, 1 x i64 -4 %size0 = objectsize ptr %p0offseted, i1 0, i1 1 %size1 = objectsize ptr %p1offseted, i1 0, i1 1 %size = select i1 %cond, i64 %size0, i64 %size1 ret i64 %size } => define i64 @pick_negative_offset_with_unsized_nullptr(i32 %n) { entry: %buffer0 = alloca i64 1 x i64 20, align 1 %cond = icmp eq i32 %n, 0 br i1 %cond, label %if.else, label %if.end if.else: br label %if.end if.end: ret i64 -1 } Transformation seems to be correct! -- 40. PassManager<Function> : Skipping NOP -- 41. PassManager<Function> : Skipping NOP -- 42. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @chain_pick_negative_offset_with_nullptr(i32 %x) { entry: %array = alloca i64 16, align 4 %c = icmp eq i32 %x, 0 %p = gep ptr %array, 1 x i64 8 %cond = select i1 %c, ptr %p, ptr null %p4 = gep ptr %cond, 1 x i64 8 %cond6 = select i1 %c, ptr %p4, ptr null %p7 = gep ptr %cond6, 1 x i64 -4 %size = objectsize ptr %p7, i1 0, i1 0 ret i64 %size } Transformation seems to be correct! (syntactically equal) -- 43. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @chain_pick_negative_offset_with_nullptr(i32 %x) { entry: %array = alloca i64 16, align 4 %c = icmp eq i32 %x, 0 %p = gep ptr %array, 1 x i64 8 %cond = select i1 %c, ptr %p, ptr null %p4 = gep ptr %cond, 1 x i64 8 %cond6 = select i1 %c, ptr %p4, ptr null %p7 = gep ptr %cond6, 1 x i64 -4 %size = objectsize ptr %p7, i1 0, i1 0 ret i64 %size } => define i64 @chain_pick_negative_offset_with_nullptr(i32 %x) { entry: %array = alloca i64 16, align 4 ret i64 4 } Transformation seems to be correct! -- 44. PassManager<Function> : Skipping NOP -- 45. PassManager<Function> : Skipping NOP -- 46. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @negative_offset_dynamic_eval(i32 %x, i64 %i) { entry: %array1 = alloca i64 16, align 16 %array2 = alloca i64 32, align 16 %tobool.not = icmp eq i32 %x, 0 br i1 %tobool.not, label %if.else, label %if.then if.then: br label %if.end if.else: %add.ptr = gep inbounds ptr %array2, 1 x i64 16 br label %if.end if.end: %ptr = phi ptr [ %array1, %if.then ], [ %add.ptr, %if.else ] %add.ptr2 = gep inbounds ptr %ptr, 4 x i64 %i %objsize = objectsize ptr %add.ptr2, i1 0, i1 1 ret i64 %objsize } Transformation seems to be correct! (syntactically equal) -- 47. LowerConstantIntrinsicsPass ---------------------------------------- define i64 @negative_offset_dynamic_eval(i32 %x, i64 %i) { entry: %array1 = alloca i64 16, align 16 %array2 = alloca i64 32, align 16 %tobool.not = icmp eq i32 %x, 0 br i1 %tobool.not, label %if.else, label %if.then if.then: br label %if.end if.else: %add.ptr = gep inbounds ptr %array2, 1 x i64 16 br label %if.end if.end: %ptr = phi ptr [ %array1, %if.then ], [ %add.ptr, %if.else ] %add.ptr2 = gep inbounds ptr %ptr, 4 x i64 %i %objsize = objectsize ptr %add.ptr2, i1 0, i1 1 ret i64 %objsize } => define i64 @negative_offset_dynamic_eval(i32 %x, i64 %i) { entry: %array1 = alloca i64 16, align 16 %array2 = alloca i64 32, align 16 %tobool.not = icmp eq i32 %x, 0 br i1 %tobool.not, label %if.else, label %if.then if.then: br label %if.end if.else: br label %if.end if.end: %#0 = phi i64 [ 16, %if.then ], [ 32, %if.else ] %#1 = phi i64 [ 0, %if.then ], [ 16, %if.else ] %add.ptr2.idx = mul i64 %i, 4 %#2 = add i64 %#1, %add.ptr2.idx %#3 = sub i64 %#0, %#2 %#4 = icmp ult i64 %#0, %#2 %#5 = select i1 %#4, i64 0, i64 %#3 %#6 = icmp ne i64 %#5, -1 assume i1 %#6 ret i64 %#5 } Transformation doesn't verify! (unsound) ERROR: Source is more defined than target Example: i32 %x = #x00000000 (0) i64 %i = poison Source: ptr %array1 = pointer(local, block_id=0, offset=0) / Address=#x00000000000000c0 ptr %array2 = pointer(local, block_id=1, offset=0) / Address=#x0000000000000050 i1 %tobool.not = #x1 (1) >> Jump to %if.else ptr %add.ptr = pointer(local, block_id=1, offset=16) / Address=#x0000000000000060 >> Jump to %if.end ptr %ptr = pointer(local, block_id=1, offset=16) / Address=#x0000000000000060 ptr %add.ptr2 = poison i64 %objsize = poison SOURCE MEMORY STATE =================== LOCAL BLOCKS: Block 0 > size: 16 align: 16 alloc type: 1 alive: true address: #x00000000000000c0 Block 1 > size: 32 align: 16 alloc type: 1 alive: true address: #x0000000000000050 Target: ptr %array1 = pointer(local, block_id=0, offset=0) / Address=#x0000000000000010 ptr %array2 = pointer(local, block_id=1, offset=0) / Address=#x0000000000000080 i1 %tobool.not = #x1 (1) >> Jump to %if.else >> Jump to %if.end i64 %#0 = #x0000000000000020 (32) i64 %#1 = #x0000000000000010 (16) i64 %add.ptr2.idx = poison i64 %#2 = poison i64 %#3 = poison i1 %#4 = poison i64 %#5 = poison i1 %#6 = poison void = UB triggered! TARGET MEMORY STATE =================== LOCAL BLOCKS: Block 0 > size: 16 align: 16 alloc type: 1 alive: true address: #x0000000000000010 Block 1 > size: 32 align: 16 alloc type: 1 alive: true address: #x0000000000000080 Pass: LowerConstantIntrinsicsPass 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=lower-constant-intrinsics' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_ckQ1GCxb_GXzz.bc" ------------------- SMT STATS ------------------- Num queries: 71 Num invalid: 0 Num skips: 0 Num trivial: 66 (48.2%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 51 (71.8%) Num UNSAT: 20 (28.2%) Alive2: Transform doesn't verify; aborting!
Transforms/LowerConstantIntrinsics/builtin-object-size-phi.ll' FAILED ******************** Exit Code: 2 Command Output (stdout): -- # RUN: at line 2 /home/nlopes/alive2/build/opt-alive.sh -passes=lower-constant-intrinsics -S < /bitbucket/nlopes/llvm/llvm/test/Transforms/LowerConstantIntrinsics/builtin-object-size-phi.ll | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/LowerConstantIntrinsics/builtin-object-size-phi.ll # executed command: /home/nlopes/alive2/build/opt-alive.sh -passes=lower-constant-intrinsics -S # .---command stderr------------ # `----------------------------- # error: command failed with exit status: 1 # executed command: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/LowerConstantIntrinsics/builtin-object-size-phi.ll # .---command stderr------------ # | FileCheck error: '<stdin>' is empty. # | FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/LowerConstantIntrinsics/builtin-object-size-phi.ll # `----------------------------- # error: command failed with exit status: 2 --