64.01/33.62 MAYBE 64.09/33.63 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 64.09/33.63 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 64.09/33.63 64.09/33.63 64.09/33.63 Termination of the given C Problem could not be shown: 64.09/33.63 64.09/33.63 (0) C Problem 64.09/33.63 (1) CToLLVMProof [EQUIVALENT, 162 ms] 64.09/33.63 (2) LLVM problem 64.09/33.63 64.09/33.63 64.09/33.63 ---------------------------------------- 64.09/33.63 64.09/33.63 (0) 64.09/33.63 Obligation: 64.09/33.63 c file /export/starexec/sandbox/benchmark/theBenchmark.c 64.09/33.63 ---------------------------------------- 64.09/33.63 64.09/33.63 (1) CToLLVMProof (EQUIVALENT) 64.09/33.63 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 64.09/33.63 ---------------------------------------- 64.09/33.63 64.09/33.63 (2) 64.09/33.63 Obligation: 64.09/33.63 LLVM Problem 64.09/33.63 64.09/33.63 Aliases: 64.09/33.63 64.09/33.63 Data layout: 64.09/33.63 64.09/33.63 "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 64.09/33.63 64.09/33.63 Machine: 64.09/33.63 64.09/33.63 "x86_64-pc-linux-gnu" 64.09/33.63 64.09/33.63 Type definitions: 64.09/33.63 64.09/33.63 struct.TreeNode --> BasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode) 64.09/33.63 64.09/33.63 struct.StackItem --> BasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode) 64.09/33.63 64.09/33.63 Global variables: 64.09/33.63 64.09/33.63 Function declarations and definitions: 64.09/33.63 64.09/33.63 *BasicFunctionTypename: "malloc" returnParam: *i8 noalias parameters: (i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 64.09/33.63 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 64.09/33.63 *BasicFunctionTypename: "free" returnParam: BasicVoidType parameters: (*i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 64.09/33.63 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 64.09/33.63 0: 64.09/33.63 %1 = alloca i32, align 4 64.09/33.63 %root = alloca *BasicTypeName typeName: struct.TreeNodeBasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode), align 8 64.09/33.63 %n = alloca *BasicTypeName typeName: struct.TreeNodeBasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode), align 8 64.09/33.63 %s = alloca *BasicTypeName typeName: struct.StackItemBasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode), align 8 64.09/33.63 %st = alloca *BasicTypeName typeName: struct.StackItemBasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode), align 8 64.09/33.63 store 0, %1 64.09/33.63 %2 = call noalias *i8 @malloc(i64 16) nounwind 64.09/33.63 %3 = bitcast *i8 %2 to *BasicTypeName typeName: struct.TreeNodeBasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode) 64.09/33.63 store %3, %root 64.09/33.63 %4 = load %root 64.09/33.63 %5 = getelementptr %4, 0, 0 64.09/33.63 store null, %5 64.09/33.63 %6 = load %root 64.09/33.63 %7 = getelementptr %6, 0, 1 64.09/33.63 store null, %7 64.09/33.63 br %8 64.09/33.63 8: 64.09/33.63 %9 = call i32 (...)* @__VERIFIER_nondet_int() 64.09/33.63 %10 = icmp ne %9 0 64.09/33.63 br %10, %11, %80 64.09/33.63 11: 64.09/33.63 %12 = load %root 64.09/33.63 store %12, %n 64.09/33.63 br %13 64.09/33.63 13: 64.09/33.63 %14 = load %n 64.09/33.63 %15 = getelementptr %14, 0, 0 64.09/33.63 %16 = load %15 64.09/33.63 %17 = icmp ne %16 null 64.09/33.63 br %17, %18, %23 64.09/33.63 18: 64.09/33.63 %19 = load %n 64.09/33.63 %20 = getelementptr %19, 0, 1 64.09/33.63 %21 = load %20 64.09/33.63 %22 = icmp ne %21 null 64.09/33.63 br %23 64.09/33.63 23: 64.09/33.63 %24 = phi [0, %13], [%22, %18] 64.09/33.63 br %24, %25, %37 64.09/33.63 25: 64.09/33.63 %26 = call i32 (...)* @__VERIFIER_nondet_int() 64.09/33.63 %27 = icmp ne %26 0 64.09/33.63 br %27, %28, %32 64.09/33.63 28: 64.09/33.63 %29 = load %n 64.09/33.63 %30 = getelementptr %29, 0, 0 64.09/33.63 %31 = load %30 64.09/33.63 store %31, %n 64.09/33.63 br %36 64.09/33.63 32: 64.09/33.63 %33 = load %n 64.09/33.63 %34 = getelementptr %33, 0, 1 64.09/33.63 %35 = load %34 64.09/33.63 store %35, %n 64.09/33.63 br %36 64.09/33.63 36: 64.09/33.63 br %13 64.09/33.63 37: 64.09/33.63 %38 = load %n 64.09/33.63 %39 = getelementptr %38, 0, 0 64.09/33.63 %40 = load %39 64.09/33.63 %41 = icmp ne %40 null 64.09/33.63 br %41, %58, %42 64.09/33.63 42: 64.09/33.63 %43 = call i32 (...)* @__VERIFIER_nondet_int() 64.09/33.63 %44 = icmp ne %43 0 64.09/33.63 br %44, %45, %58 64.09/33.63 45: 64.09/33.63 %46 = call noalias *i8 @malloc(i64 16) nounwind 64.09/33.63 %47 = bitcast *i8 %46 to *BasicTypeName typeName: struct.TreeNodeBasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode) 64.09/33.63 %48 = load %n 64.09/33.63 %49 = getelementptr %48, 0, 0 64.09/33.63 store %47, %49 64.09/33.63 %50 = load %n 64.09/33.63 %51 = getelementptr %50, 0, 0 64.09/33.63 %52 = load %51 64.09/33.63 %53 = getelementptr %52, 0, 0 64.09/33.63 store null, %53 64.09/33.63 %54 = load %n 64.09/33.63 %55 = getelementptr %54, 0, 0 64.09/33.63 %56 = load %55 64.09/33.63 %57 = getelementptr %56, 0, 1 64.09/33.63 store null, %57 64.09/33.63 br %58 64.09/33.63 58: 64.09/33.63 %59 = load %n 64.09/33.63 %60 = getelementptr %59, 0, 1 64.09/33.63 %61 = load %60 64.09/33.63 %62 = icmp ne %61 null 64.09/33.63 br %62, %79, %63 64.09/33.63 63: 64.09/33.63 %64 = call i32 (...)* @__VERIFIER_nondet_int() 64.09/33.63 %65 = icmp ne %64 0 64.09/33.63 br %65, %66, %79 64.09/33.63 66: 64.09/33.63 %67 = call noalias *i8 @malloc(i64 16) nounwind 64.09/33.63 %68 = bitcast *i8 %67 to *BasicTypeName typeName: struct.TreeNodeBasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode) 64.09/33.63 %69 = load %n 64.09/33.63 %70 = getelementptr %69, 0, 1 64.09/33.63 store %68, %70 64.09/33.63 %71 = load %n 64.09/33.63 %72 = getelementptr %71, 0, 1 64.09/33.63 %73 = load %72 64.09/33.63 %74 = getelementptr %73, 0, 0 64.09/33.63 store null, %74 64.09/33.63 %75 = load %n 64.09/33.63 %76 = getelementptr %75, 0, 1 64.09/33.63 %77 = load %76 64.09/33.63 %78 = getelementptr %77, 0, 1 64.09/33.63 store null, %78 64.09/33.63 br %79 64.09/33.63 79: 64.09/33.63 br %8 64.09/33.63 80: 64.09/33.63 store null, %n 64.09/33.63 %81 = call noalias *i8 @malloc(i64 16) nounwind 64.09/33.63 %82 = bitcast *i8 %81 to *BasicTypeName typeName: struct.StackItemBasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode) 64.09/33.63 store %82, %s 64.09/33.63 %83 = load %s 64.09/33.63 %84 = getelementptr %83, 0, 0 64.09/33.63 store null, %84 64.09/33.63 %85 = load %root 64.09/33.63 %86 = load %s 64.09/33.63 %87 = getelementptr %86, 0, 1 64.09/33.63 store %85, %87 64.09/33.63 br %88 64.09/33.63 88: 64.09/33.63 %89 = load %s 64.09/33.63 %90 = icmp ne %89 null 64.09/33.63 br %90, %91, %137 64.09/33.63 91: 64.09/33.63 %92 = load %s 64.09/33.63 store %92, %st 64.09/33.63 %93 = load %s 64.09/33.63 %94 = getelementptr %93, 0, 0 64.09/33.63 %95 = load %94 64.09/33.63 store %95, %s 64.09/33.63 %96 = load %st 64.09/33.63 %97 = getelementptr %96, 0, 1 64.09/33.63 %98 = load %97 64.09/33.63 store %98, %n 64.09/33.63 %99 = load %st 64.09/33.63 %100 = bitcast *BasicTypeName typeName: struct.StackItemBasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode) %99 to *i8 64.09/33.63 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %100) nounwind 64.09/33.63 %101 = load %n 64.09/33.63 %102 = getelementptr %101, 0, 0 64.09/33.63 %103 = load %102 64.09/33.63 %104 = icmp ne %103 null 64.09/33.63 br %104, %105, %117 64.09/33.63 105: 64.09/33.63 %106 = call noalias *i8 @malloc(i64 16) nounwind 64.09/33.63 %107 = bitcast *i8 %106 to *BasicTypeName typeName: struct.StackItemBasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode) 64.09/33.63 store %107, %st 64.09/33.63 %108 = load %s 64.09/33.63 %109 = load %st 64.09/33.63 %110 = getelementptr %109, 0, 0 64.09/33.63 store %108, %110 64.09/33.63 %111 = load %n 64.09/33.63 %112 = getelementptr %111, 0, 0 64.09/33.63 %113 = load %112 64.09/33.63 %114 = load %st 64.09/33.63 %115 = getelementptr %114, 0, 1 64.09/33.63 store %113, %115 64.09/33.63 %116 = load %st 64.09/33.63 store %116, %s 64.09/33.63 br %117 64.09/33.63 117: 64.09/33.63 %118 = load %n 64.09/33.63 %119 = getelementptr %118, 0, 1 64.09/33.63 %120 = load %119 64.09/33.63 %121 = icmp ne %120 null 64.09/33.63 br %121, %122, %134 64.09/33.63 122: 64.09/33.63 %123 = call noalias *i8 @malloc(i64 16) nounwind 64.09/33.63 %124 = bitcast *i8 %123 to *BasicTypeName typeName: struct.StackItemBasicStructureType(elementType: *struct.StackItem, elementType: *struct.TreeNode) 64.09/33.63 store %124, %st 64.09/33.63 %125 = load %s 64.09/33.63 %126 = load %st 64.09/33.63 %127 = getelementptr %126, 0, 0 64.09/33.63 store %125, %127 64.09/33.63 %128 = load %n 64.09/33.63 %129 = getelementptr %128, 0, 1 64.09/33.63 %130 = load %129 64.09/33.63 %131 = load %st 64.09/33.63 %132 = getelementptr %131, 0, 1 64.09/33.63 store %130, %132 64.09/33.63 %133 = load %st 64.09/33.63 store %133, %s 64.09/33.63 br %134 64.09/33.63 134: 64.09/33.63 %135 = load %n 64.09/33.63 %136 = bitcast *BasicTypeName typeName: struct.TreeNodeBasicStructureType(elementType: *struct.TreeNode, elementType: *struct.TreeNode) %135 to *i8 64.09/33.63 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %136) nounwind 64.09/33.63 br %88 64.09/33.63 137: 64.09/33.63 ret 0 64.09/33.63 64.09/33.63 64.09/33.63 Analyze Termination of all function calls matching the pattern: 64.09/33.63 main() 64.09/33.66 EOF