/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 170 ms] (2) LLVM problem ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/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: *struct.node, elementType: i32) 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: "__VERIFIER_error" returnParam: BasicVoidType parameters: () variableLength: true 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: *struct.node, elementType: i32), align 8 %item = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %node1 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 %snext = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), 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: *struct.node, elementType: i32) 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, 0 store null, %13 %14 = call i32 @__VERIFIER_nondet_int() %15 = load %node %16 = getelementptr %15, 0, 1 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 %32 = icmp ne %31 null br %32, %34, %33 33: store 0, %1 br %62 34: %35 = load %data Unnamed Call-Instruction = call BasicVoidType @inspect_before(*BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %35) br %36 36: %37 = load %data %38 = getelementptr %37, 0, 1 %39 = load %38 %40 = icmp ne %39 null br %40, %41, %44 41: %42 = load %data %43 = call *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) @seq_sort_core(*BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %42) store %43, %data br %36 44: %45 = load %data Unnamed Call-Instruction = call BasicVoidType @inspect_after(*BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %45) %46 = load %data %47 = getelementptr %46, 0, 0 %48 = load %47 store %48, %node1 %49 = load %data %50 = bitcast *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %49 to *i8 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %50) nounwind br %51 51: %52 = load %node1 %53 = icmp ne %52 null br %53, %54, %61 54: %55 = load %node1 %56 = getelementptr %55, 0, 0 %57 = load %56 store %57, %snext %58 = load %node1 %59 = bitcast *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %58 to *i8 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %59) nounwind %60 = load %snext store %60, %node1 br %51 61: store 0, %1 br %62 62: %63 = load %1 ret %63 *BasicFunctionTypename: "inspect_before" linkageType: INTERNAL returnParam: BasicVoidType parameters: (shape *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list)) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 store %shape, %1 br %2 2: %3 = load %1 %4 = icmp ne %3 null br %4, %6, %5 5: Unnamed Call-Instruction = call BasicVoidType @fail() br %6 6: br %7 7: br %8 8: %9 = load %1 %10 = getelementptr %9, 0, 1 %11 = load %10 %12 = icmp ne %11 null br %12, %13, %50 13: br %14 14: %15 = load %1 %16 = icmp ne %15 null br %16, %18, %17 17: Unnamed Call-Instruction = call BasicVoidType @fail() br %18 18: br %19 19: br %20 20: %21 = load %1 %22 = getelementptr %21, 0, 1 %23 = load %22 %24 = icmp ne %23 null br %24, %26, %25 25: Unnamed Call-Instruction = call BasicVoidType @fail() br %26 26: br %27 27: br %28 28: %29 = load %1 %30 = getelementptr %29, 0, 0 %31 = load %30 %32 = icmp ne %31 null br %32, %34, %33 33: Unnamed Call-Instruction = call BasicVoidType @fail() br %34 34: br %35 35: br %36 36: %37 = load %1 %38 = getelementptr %37, 0, 0 %39 = load %38 %40 = getelementptr %39, 0, 0 %41 = load %40 %42 = icmp eq %41 null br %42, %44, %43 43: Unnamed Call-Instruction = call BasicVoidType @fail() br %44 44: br %45 45: br %46 46: %47 = load %1 %48 = getelementptr %47, 0, 1 %49 = load %48 store %49, %1 br %8 50: br %51 51: %52 = load %1 %53 = icmp ne %52 null br %53, %55, %54 54: Unnamed Call-Instruction = call BasicVoidType @fail() br %55 55: br %56 56: br %57 57: %58 = load %1 %59 = getelementptr %58, 0, 1 %60 = load %59 %61 = icmp eq %60 null br %61, %63, %62 62: Unnamed Call-Instruction = call BasicVoidType @fail() br %63 63: br %64 64: br %65 65: %66 = load %1 %67 = getelementptr %66, 0, 0 %68 = load %67 %69 = icmp ne %68 null br %69, %71, %70 70: Unnamed Call-Instruction = call BasicVoidType @fail() br %71 71: br %72 72: br %73 73: %74 = load %1 %75 = getelementptr %74, 0, 0 %76 = load %75 %77 = getelementptr %76, 0, 0 %78 = load %77 %79 = icmp eq %78 null br %79, %81, %80 80: Unnamed Call-Instruction = call BasicVoidType @fail() br %81 81: br %82 82: ret void *BasicFunctionTypename: "seq_sort_core" linkageType: INTERNAL returnParam: *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) parameters: (data *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list)) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = 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 store %data, %1 store null, %dst br %2 2: %3 = load %1 %4 = icmp ne %3 null br %4, %5, %34 5: %6 = load %1 %7 = getelementptr %6, 0, 1 %8 = load %7 store %8, %next %9 = load %next %10 = icmp ne %9 null br %10, %16, %11 11: %12 = load %dst %13 = load %1 %14 = getelementptr %13, 0, 1 store %12, %14 %15 = load %1 store %15, %dst br %34 16: %17 = load %1 %18 = getelementptr %17, 0, 0 %19 = load %1 %20 = getelementptr %19, 0, 0 %21 = load %20 %22 = load %next %23 = getelementptr %22, 0, 0 %24 = load %23 Unnamed Call-Instruction = call BasicVoidType @merge_pair(**BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %18, *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %21, *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %24) %25 = load %dst %26 = load %1 %27 = getelementptr %26, 0, 1 store %25, %27 %28 = load %1 store %28, %dst %29 = load %next %30 = getelementptr %29, 0, 1 %31 = load %30 store %31, %1 %32 = load %next %33 = bitcast *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list) %32 to *i8 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %33) nounwind br %2 34: %35 = load %dst ret %35 *BasicFunctionTypename: "inspect_after" linkageType: INTERNAL returnParam: BasicVoidType parameters: (shape *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list)) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca *BasicTypeName typeName: struct.listBasicStructureType(elementType: *struct.node, elementType: *struct.list), align 8 %pos = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 store %shape, %1 br %2 2: %3 = load %1 %4 = icmp ne %3 null br %4, %6, %5 5: Unnamed Call-Instruction = call BasicVoidType @fail() br %6 6: br %7 7: br %8 8: %9 = load %1 %10 = getelementptr %9, 0, 1 %11 = load %10 %12 = icmp eq %11 null br %12, %14, %13 13: Unnamed Call-Instruction = call BasicVoidType @fail() br %14 14: br %15 15: br %16 16: %17 = load %1 %18 = getelementptr %17, 0, 0 %19 = load %18 %20 = icmp ne %19 null br %20, %22, %21 21: Unnamed Call-Instruction = call BasicVoidType @fail() br %22 22: br %23 23: %24 = load %1 %25 = getelementptr %24, 0, 0 %26 = load %25 store %26, %pos br %27 27: %28 = load %pos %29 = getelementptr %28, 0, 0 %30 = load %29 %31 = icmp ne %30 null br %31, %32, %37 32: br %33 33: %34 = load %pos %35 = getelementptr %34, 0, 0 %36 = load %35 store %36, %pos br %27 37: br %38 38: %39 = load %pos %40 = getelementptr %39, 0, 0 %41 = load %40 %42 = icmp ne %41 null br %42, %43, %44 43: Unnamed Call-Instruction = call BasicVoidType @fail() br %44 44: br %45 45: ret void *BasicFunctionTypename: "fail" linkageType: INTERNAL returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: br %1 1: Unnamed Call-Instruction = call BasicVoidType (...)* @__VERIFIER_error() noreturn unreachable 2: ret void *BasicFunctionTypename: "merge_pair" linkageType: INTERNAL returnParam: BasicVoidType parameters: (dst **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), sub1 *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), sub2 *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32)) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 %2 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 %3 = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 store %dst, %1 store %sub1, %2 store %sub2, %3 br %4 4: %5 = load %2 %6 = icmp ne %5 null br %6, %10, %7 7: %8 = load %3 %9 = icmp ne %8 null br %10 10: %11 = phi [1, %4], [%9, %7] br %11, %12, %29 12: %13 = load %3 %14 = icmp ne %13 null br %14, %15, %26 15: %16 = load %2 %17 = icmp ne %16 null br %17, %18, %27 18: %19 = load %2 %20 = getelementptr %19, 0, 1 %21 = load %20 %22 = load %3 %23 = getelementptr %22, 0, 1 %24 = load %23 %25 = icmp slt %21 %24 br %25, %26, %27 26: Unnamed Call-Instruction = call BasicVoidType @merge_single_node(***BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %1, **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %2) br %28 27: Unnamed Call-Instruction = call BasicVoidType @merge_single_node(***BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %1, **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32) %3) br %28 28: br %4 29: ret void *BasicFunctionTypename: "merge_single_node" linkageType: INTERNAL returnParam: BasicVoidType parameters: (dst ***BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), data **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32)) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca ***BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 %2 = alloca **BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 %node = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: *struct.node, elementType: i32), align 8 store %dst, %1 store %data, %2 %3 = load %2 %4 = load %3 store %4, %node %5 = load %node %6 = getelementptr %5, 0, 0 %7 = load %6 %8 = load %2 store %7, %8 %9 = load %node %10 = getelementptr %9, 0, 0 store null, %10 %11 = load %node %12 = load %1 %13 = load %12 store %11, %13 %14 = load %node %15 = getelementptr %14, 0, 0 %16 = load %1 store %15, %16 ret void Analyze Termination of all function calls matching the pattern: main()