/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 167 ms] (2) LLVM problem ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "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" Machine: "x86_64-pc-linux-gnu" Type definitions: struct.list --> BasicStructureType(elementType: *struct.node, elementType: *struct.list) struct.node --> BasicStructureType(elementType: i32, elementType: *struct.node) struct.iterator --> BasicStructureType(elementType: *struct.list, elementType: *struct.node) Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "malloc" returnParam: *i8 noalias parameters: (i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "abort" returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "free" returnParam: BasicVoidType parameters: (*i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %data = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %node = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %item = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %iter = alloca BasicTypeName typeName: struct.iteratorBasicStructureType(elementType: *struct.list, elementType: *struct.node), align 8 %list = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %node1 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %current = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %current2 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %list3 = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %dst = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %next = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %dst4 = alloca **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %sub1 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %sub2 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %pdst = alloca ***BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %pdata = alloca **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %node5 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %iter6 = alloca BasicTypeName typeName: struct.iteratorBasicStructureType(elementType: *struct.list, elementType: *struct.node), align 8 %list7 = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %node8 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %current9 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %current10 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %next11 = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %node12 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 %snext = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 store 0, %1 store null, %data br %2 2: %3 = call i32 @__VERIFIER_nondet_int() %4 = icmp ne %3 0 br %4, %5, %30 5: %6 = call noalias *i8 @malloc(i64 16) nounwind %7 = bitcast *i8 %6 to *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node) store %7, %node %8 = load %node %9 = icmp ne %8 null br %9, %11, %10 10: Unnamed Call-Instruction = call BasicVoidType @abort() noreturn nounwind unreachable 11: %12 = load %node %13 = getelementptr %12, 0, 1 store null, %13 %14 = call i32 @__VERIFIER_nondet_int() %15 = load %node %16 = getelementptr %15, 0, 0 store %14, %16 %17 = call noalias *i8 @malloc(i64 16) nounwind %18 = bitcast *i8 %17 to *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) store %18, %item %19 = load %item %20 = icmp ne %19 null br %20, %22, %21 21: Unnamed Call-Instruction = call BasicVoidType @abort() noreturn nounwind unreachable 22: %23 = load %node %24 = load %item %25 = getelementptr %24, 0, 0 store %23, %25 %26 = load %data %27 = load %item %28 = getelementptr %27, 0, 1 store %26, %28 %29 = load %item store %29, %data br %2 30: %31 = load %data store %31, %list %32 = load %list %33 = getelementptr %iter, 0, 0 store %32, %33 %34 = icmp ne %32 null br %34, %35, %40 35: %36 = load %list %37 = getelementptr %36, 0, 0 %38 = load %37 %39 = getelementptr %iter, 0, 1 store %38, %39 br %40 40: %41 = getelementptr %iter, 0, 0 %42 = load %41 %43 = icmp ne %42 null br %43, %45, %44 44: store null, %node1 br %71 45: %46 = getelementptr %iter, 0, 1 %47 = load %46 store %47, %current %48 = load %current %49 = getelementptr %48, 0, 1 %50 = load %49 %51 = getelementptr %iter, 0, 1 store %50, %51 %52 = icmp ne %50 null br %52, %53, %55 53: %54 = load %current store %54, %node1 br %70 55: %56 = getelementptr %iter, 0, 0 %57 = load %56 %58 = getelementptr %57, 0, 1 %59 = load %58 %60 = getelementptr %iter, 0, 0 store %59, %60 %61 = icmp ne %59 null br %61, %62, %68 62: %63 = getelementptr %iter, 0, 0 %64 = load %63 %65 = getelementptr %64, 0, 0 %66 = load %65 %67 = getelementptr %iter, 0, 1 store %66, %67 br %68 68: %69 = load %current store %69, %node1 br %70 70: br %71 71: br %72 72: %73 = load %node1 %74 = icmp ne %73 null br %74, %75, %107 75: %76 = getelementptr %iter, 0, 0 %77 = load %76 %78 = icmp ne %77 null br %78, %80, %79 79: store null, %node1 br %106 80: %81 = getelementptr %iter, 0, 1 %82 = load %81 store %82, %current2 %83 = load %current2 %84 = getelementptr %83, 0, 1 %85 = load %84 %86 = getelementptr %iter, 0, 1 store %85, %86 %87 = icmp ne %85 null br %87, %88, %90 88: %89 = load %current2 store %89, %node1 br %105 90: %91 = getelementptr %iter, 0, 0 %92 = load %91 %93 = getelementptr %92, 0, 1 %94 = load %93 %95 = getelementptr %iter, 0, 0 store %94, %95 %96 = icmp ne %94 null br %96, %97, %103 97: %98 = getelementptr %iter, 0, 0 %99 = load %98 %100 = getelementptr %99, 0, 0 %101 = load %100 %102 = getelementptr %iter, 0, 1 store %101, %102 br %103 103: %104 = load %current2 store %104, %node1 br %105 105: br %106 106: br %72 107: %108 = load %data store %108, %list3 br %109 109: %110 = load %list3 %111 = icmp ne %110 null br %111, %112, %117 112: %113 = load %list3 %114 = getelementptr %113, 0, 1 %115 = load %114 %116 = icmp ne %115 null br %117 117: %118 = phi [0, %109], [%116, %112] br %118, %119, %189 119: store null, %dst br %120 120: %121 = load %list3 %122 = icmp ne %121 null br %122, %123, %187 123: %124 = load %list3 %125 = getelementptr %124, 0, 1 %126 = load %125 store %126, %next %127 = load %next %128 = icmp ne %127 null br %128, %134, %129 129: %130 = load %dst %131 = load %list3 %132 = getelementptr %131, 0, 1 store %130, %132 %133 = load %list3 store %133, %dst br %187 134: %135 = load %list3 %136 = getelementptr %135, 0, 0 store %136, %dst4 %137 = load %list3 %138 = getelementptr %137, 0, 0 %139 = load %138 store %139, %sub1 %140 = load %next %141 = getelementptr %140, 0, 0 %142 = load %141 store %142, %sub2 br %143 143: %144 = load %sub1 %145 = icmp ne %144 null br %145, %149, %146 146: %147 = load %sub2 %148 = icmp ne %147 null br %149 149: %150 = phi [1, %143], [%148, %146] br %150, %151, %177 151: store %dst4, %pdst %152 = load %sub2 %153 = icmp ne %152 null br %153, %154, %160 154: %155 = load %sub1 %156 = icmp ne %155 null br %156, %157, %161 157: %158 = call i32 @__VERIFIER_nondet_int() %159 = icmp ne %158 0 br %159, %160, %161 160: store %sub1, %pdata br %162 161: store %sub2, %pdata br %162 162: %163 = load %pdata %164 = load %163 store %164, %node5 %165 = load %node5 %166 = getelementptr %165, 0, 1 %167 = load %166 %168 = load %pdata store %167, %168 %169 = load %node5 %170 = getelementptr %169, 0, 1 store null, %170 %171 = load %node5 %172 = load %pdst %173 = load %172 store %171, %173 %174 = load %node5 %175 = getelementptr %174, 0, 1 %176 = load %pdst store %175, %176 br %143 177: %178 = load %dst %179 = load %list3 %180 = getelementptr %179, 0, 1 store %178, %180 %181 = load %list3 store %181, %dst %182 = load %next %183 = getelementptr %182, 0, 1 %184 = load %183 store %184, %list3 %185 = load %next %186 = bitcast *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %185 to *i8 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %186) nounwind br %120 187: %188 = load %dst store %188, %list3 br %109 189: %190 = load %list3 store %190, %data %191 = load %data store %191, %list7 %192 = load %list7 %193 = getelementptr %iter6, 0, 0 store %192, %193 %194 = icmp ne %192 null br %194, %195, %200 195: %196 = load %list7 %197 = getelementptr %196, 0, 0 %198 = load %197 %199 = getelementptr %iter6, 0, 1 store %198, %199 br %200 200: %201 = getelementptr %iter6, 0, 0 %202 = load %201 %203 = icmp ne %202 null br %203, %205, %204 204: store null, %node8 br %231 205: %206 = getelementptr %iter6, 0, 1 %207 = load %206 store %207, %current9 %208 = load %current9 %209 = getelementptr %208, 0, 1 %210 = load %209 %211 = getelementptr %iter6, 0, 1 store %210, %211 %212 = icmp ne %210 null br %212, %213, %215 213: %214 = load %current9 store %214, %node8 br %230 215: %216 = getelementptr %iter6, 0, 0 %217 = load %216 %218 = getelementptr %217, 0, 1 %219 = load %218 %220 = getelementptr %iter6, 0, 0 store %219, %220 %221 = icmp ne %219 null br %221, %222, %228 222: %223 = getelementptr %iter6, 0, 0 %224 = load %223 %225 = getelementptr %224, 0, 0 %226 = load %225 %227 = getelementptr %iter6, 0, 1 store %226, %227 br %228 228: %229 = load %current9 store %229, %node8 br %230 230: br %231 231: br %232 232: %233 = load %node8 %234 = icmp ne %233 null br %234, %235, %267 235: %236 = getelementptr %iter6, 0, 0 %237 = load %236 %238 = icmp ne %237 null br %238, %240, %239 239: store null, %node8 br %266 240: %241 = getelementptr %iter6, 0, 1 %242 = load %241 store %242, %current10 %243 = load %current10 %244 = getelementptr %243, 0, 1 %245 = load %244 %246 = getelementptr %iter6, 0, 1 store %245, %246 %247 = icmp ne %245 null br %247, %248, %250 248: %249 = load %current10 store %249, %node8 br %265 250: %251 = getelementptr %iter6, 0, 0 %252 = load %251 %253 = getelementptr %252, 0, 1 %254 = load %253 %255 = getelementptr %iter6, 0, 0 store %254, %255 %256 = icmp ne %254 null br %256, %257, %263 257: %258 = getelementptr %iter6, 0, 0 %259 = load %258 %260 = getelementptr %259, 0, 0 %261 = load %260 %262 = getelementptr %iter6, 0, 1 store %261, %262 br %263 263: %264 = load %current10 store %264, %node8 br %265 265: br %266 266: br %232 267: br %268 268: %269 = load %data %270 = icmp ne %269 null br %270, %271, %292 271: %272 = load %data %273 = getelementptr %272, 0, 1 %274 = load %273 store %274, %next11 %275 = load %data %276 = getelementptr %275, 0, 0 %277 = load %276 store %277, %node12 br %278 278: %279 = load %node12 %280 = icmp ne %279 null br %280, %281, %288 281: %282 = load %node12 %283 = getelementptr %282, 0, 1 %284 = load %283 store %284, %snext %285 = load %node12 %286 = bitcast *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node) %285 to *i8 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %286) nounwind %287 = load %snext store %287, %node12 br %278 288: %289 = load %data %290 = bitcast *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %289 to *i8 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %290) nounwind %291 = load %next11 store %291, %data br %268 292: ret 0 Analyze Termination of all function calls matching the pattern: main()