30.16/10.42 MAYBE 30.48/10.42 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 30.48/10.42 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 30.48/10.42 30.48/10.42 30.48/10.42 Termination of the given C Problem could not be shown: 30.48/10.42 30.48/10.42 (0) C Problem 30.48/10.42 (1) CToLLVMProof [EQUIVALENT, 167 ms] 30.48/10.42 (2) LLVM problem 30.48/10.42 30.48/10.42 30.48/10.42 ---------------------------------------- 30.48/10.42 30.48/10.42 (0) 30.48/10.42 Obligation: 30.48/10.42 c file /export/starexec/sandbox/benchmark/theBenchmark.c 30.48/10.42 ---------------------------------------- 30.48/10.42 30.48/10.42 (1) CToLLVMProof (EQUIVALENT) 30.48/10.42 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 30.48/10.42 ---------------------------------------- 30.48/10.42 30.48/10.42 (2) 30.48/10.42 Obligation: 30.48/10.42 LLVM Problem 30.48/10.42 30.48/10.42 Aliases: 30.48/10.42 30.48/10.42 Data layout: 30.48/10.42 30.48/10.42 "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" 30.48/10.42 30.48/10.42 Machine: 30.48/10.42 30.48/10.42 "x86_64-pc-linux-gnu" 30.48/10.42 30.48/10.42 Type definitions: 30.48/10.42 30.48/10.42 struct.node --> BasicStructureType(elementType: i32, elementType: *struct.node) 30.48/10.42 30.48/10.42 Global variables: 30.48/10.42 30.48/10.42 Function declarations and definitions: 30.48/10.42 30.48/10.42 *BasicFunctionTypename: "malloc" returnParam: *i8 noalias parameters: (i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 30.48/10.42 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 30.48/10.42 *BasicFunctionTypename: "__VERIFIER_error" returnParam: BasicVoidType parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc 30.48/10.42 *BasicFunctionTypename: "free" returnParam: BasicVoidType parameters: (*i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 30.48/10.42 *BasicFunctionTypename: "exit" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (s i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 30.48/10.42 0: 30.48/10.42 %1 = alloca i32, align 4 30.48/10.42 store %s, %1 30.48/10.42 br %2 30.48/10.42 2: 30.48/10.42 br %2 30.48/10.42 3: 30.48/10.42 ret void 30.48/10.42 30.48/10.42 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 30.48/10.42 0: 30.48/10.42 %1 = alloca i32, align 4 30.48/10.42 %a = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 30.48/10.42 %t = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 30.48/10.42 %p = alloca *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node), align 8 30.48/10.42 %i = alloca i32, align 4 30.48/10.42 store 0, %1 30.48/10.42 %2 = call noalias *i8 @malloc(i64 16) nounwind 30.48/10.42 %3 = bitcast *i8 %2 to *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node) 30.48/10.42 store %3, %a 30.48/10.42 %4 = load %a 30.48/10.42 %5 = icmp eq %4 null 30.48/10.42 br %5, %6, %7 30.48/10.42 6: 30.48/10.42 Unnamed Call-Instruction = call BasicVoidType @exit(i32 1) noreturn nounwind 30.48/10.42 unreachable 30.48/10.42 7: 30.48/10.42 %8 = load %a 30.48/10.42 store %8, %p 30.48/10.42 store 0, %i 30.48/10.42 br %9 30.48/10.42 9: 30.48/10.42 %10 = load %i 30.48/10.42 %11 = icmp slt %10 30 30.48/10.42 br %11, %12, %15 30.48/10.42 12: 30.48/10.42 %13 = call i32 (...)* @__VERIFIER_nondet_int() 30.48/10.42 %14 = icmp ne %13 0 30.48/10.42 br %15 30.48/10.42 15: 30.48/10.42 %16 = phi [0, %9], [%14, %12] 30.48/10.42 br %16, %17, %35 30.48/10.42 17: 30.48/10.42 %18 = load %i 30.48/10.42 %19 = load %p 30.48/10.42 %20 = getelementptr %19, 0, 0 30.48/10.42 store %18, %20 30.48/10.42 %21 = call noalias *i8 @malloc(i64 16) nounwind 30.48/10.42 %22 = bitcast *i8 %21 to *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node) 30.48/10.42 store %22, %t 30.48/10.42 %23 = load %t 30.48/10.42 %24 = icmp eq %23 null 30.48/10.42 br %24, %25, %26 30.48/10.42 25: 30.48/10.42 Unnamed Call-Instruction = call BasicVoidType @exit(i32 1) noreturn nounwind 30.48/10.42 unreachable 30.48/10.42 26: 30.48/10.42 %27 = load %t 30.48/10.42 %28 = load %p 30.48/10.42 %29 = getelementptr %28, 0, 1 30.48/10.42 store %27, %29 30.48/10.42 %30 = load %p 30.48/10.42 %31 = getelementptr %30, 0, 1 30.48/10.42 %32 = load %31 30.48/10.42 store %32, %p 30.48/10.42 %33 = load %i 30.48/10.42 %34 = add %33 1 30.48/10.42 store %34, %i 30.48/10.42 br %9 30.48/10.42 35: 30.48/10.42 %36 = load %i 30.48/10.42 %37 = load %p 30.48/10.42 %38 = getelementptr %37, 0, 0 30.48/10.42 store %36, %38 30.48/10.42 %39 = load %p 30.48/10.42 %40 = getelementptr %39, 0, 1 30.48/10.42 store null, %40 30.48/10.42 %41 = load %a 30.48/10.42 store %41, %p 30.48/10.42 store 0, %i 30.48/10.42 br %42 30.48/10.42 42: 30.48/10.42 %43 = load %p 30.48/10.42 %44 = icmp ne %43 null 30.48/10.42 br %44, %45, %59 30.48/10.42 45: 30.48/10.42 %46 = load %p 30.48/10.42 %47 = getelementptr %46, 0, 0 30.48/10.42 %48 = load %47 30.48/10.42 %49 = load %i 30.48/10.42 %50 = icmp ne %48 %49 30.48/10.42 br %50, %51, %53 30.48/10.42 51: 30.48/10.42 br %52 30.48/10.42 52: 30.48/10.42 Unnamed Call-Instruction = call BasicVoidType (...)* @__VERIFIER_error() noreturn 30.48/10.42 unreachable 30.48/10.42 53: 30.48/10.42 %54 = load %p 30.48/10.42 %55 = getelementptr %54, 0, 1 30.48/10.42 %56 = load %55 30.48/10.42 store %56, %p 30.48/10.42 %57 = load %i 30.48/10.42 %58 = add %57 1 30.48/10.42 store %58, %i 30.48/10.42 br %42 30.48/10.42 59: 30.48/10.42 %60 = load %a 30.48/10.42 store %60, %p 30.48/10.42 br %61 30.48/10.42 61: 30.48/10.42 %62 = load %p 30.48/10.42 %63 = icmp ne %62 null 30.48/10.42 br %63, %64, %71 30.48/10.42 64: 30.48/10.42 %65 = load %p 30.48/10.42 %66 = getelementptr %65, 0, 1 30.48/10.42 %67 = load %66 30.48/10.42 store %67, %t 30.48/10.42 %68 = load %p 30.48/10.42 %69 = bitcast *BasicTypeName typeName: struct.nodeBasicStructureType(elementType: i32, elementType: *struct.node) %68 to *i8 30.48/10.42 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %69) nounwind 30.48/10.42 %70 = load %t 30.48/10.42 store %70, %p 30.48/10.42 br %61 30.48/10.42 71: 30.48/10.42 ret 0 30.48/10.42 30.48/10.42 30.48/10.42 Analyze Termination of all function calls matching the pattern: 30.48/10.42 main() 30.90/10.66 EOF