12.78/4.66 MAYBE 13.08/4.67 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 13.08/4.67 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 13.08/4.67 13.08/4.67 13.08/4.67 Termination of the given C Problem could not be shown: 13.08/4.67 13.08/4.67 (0) C Problem 13.08/4.67 (1) CToLLVMProof [EQUIVALENT, 169 ms] 13.08/4.67 (2) LLVM problem 13.08/4.67 13.08/4.67 13.08/4.67 ---------------------------------------- 13.08/4.67 13.08/4.67 (0) 13.08/4.67 Obligation: 13.08/4.67 c file /export/starexec/sandbox/benchmark/theBenchmark.c 13.08/4.67 ---------------------------------------- 13.08/4.67 13.08/4.67 (1) CToLLVMProof (EQUIVALENT) 13.08/4.67 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 13.08/4.67 ---------------------------------------- 13.08/4.67 13.08/4.67 (2) 13.08/4.67 Obligation: 13.08/4.67 LLVM Problem 13.08/4.67 13.08/4.67 Aliases: 13.08/4.67 13.08/4.67 Data layout: 13.08/4.67 13.08/4.67 "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" 13.08/4.67 13.08/4.67 Machine: 13.08/4.67 13.08/4.67 "x86_64-pc-linux-gnu" 13.08/4.67 13.08/4.67 Type definitions: 13.08/4.67 13.08/4.67 Global variables: 13.08/4.67 13.08/4.67 Name: n initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null 13.08/4.67 13.08/4.67 Name: a initVal: null type: *i32 addrSpace: null alignment: 8 threadLocal: false constant: false linkageType: COMMON section: null 13.08/4.67 13.08/4.67 Name: b initVal: null type: *i32 addrSpace: null alignment: 8 threadLocal: false constant: false linkageType: COMMON section: null 13.08/4.67 13.08/4.67 Function declarations and definitions: 13.08/4.67 13.08/4.67 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 13.08/4.67 *BasicFunctionTypename: "malloc" returnParam: *i8 noalias parameters: (i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 13.08/4.67 *BasicFunctionTypename: "free" returnParam: BasicVoidType parameters: (*i8) variableLength: false visibilityType: DEFAULT callingConvention: ccc 13.08/4.67 *BasicFunctionTypename: "foo" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 13.08/4.67 0: 13.08/4.67 %i = alloca i32, align 4 13.08/4.67 store 0, %i 13.08/4.67 br %1 13.08/4.67 1: 13.08/4.67 %2 = load %i 13.08/4.67 %3 = load @n 13.08/4.67 %4 = icmp slt %2 %3 13.08/4.67 br %4, %5, %14 13.08/4.67 5: 13.08/4.67 %6 = load @n 13.08/4.67 %7 = load %i 13.08/4.67 %8 = sext i32 %7 to i64 13.08/4.67 %9 = load @a 13.08/4.67 %10 = getelementptr %9, %8 13.08/4.67 store %6, %10 13.08/4.67 br %11 13.08/4.67 11: 13.08/4.67 %12 = load %i 13.08/4.67 %13 = add %12 1 13.08/4.67 store %13, %i 13.08/4.67 br %1 13.08/4.67 14: 13.08/4.67 store 0, %i 13.08/4.67 br %15 13.08/4.67 15: 13.08/4.67 %16 = load %i 13.08/4.67 %17 = load @n 13.08/4.67 %18 = sub %17 1 13.08/4.67 %19 = icmp slt %16 %18 13.08/4.67 br %19, %20, %29 13.08/4.67 20: 13.08/4.67 %21 = load @n 13.08/4.67 %22 = load %i 13.08/4.67 %23 = sext i32 %22 to i64 13.08/4.67 %24 = load @b 13.08/4.67 %25 = getelementptr %24, %23 13.08/4.67 store %21, %25 13.08/4.67 br %26 13.08/4.67 26: 13.08/4.67 %27 = load %i 13.08/4.67 %28 = add %27 1 13.08/4.67 store %28, %i 13.08/4.67 br %15 13.08/4.67 29: 13.08/4.67 ret void 13.08/4.67 13.08/4.67 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 13.08/4.67 0: 13.08/4.67 %1 = alloca i32, align 4 13.08/4.67 store 0, %1 13.08/4.67 store 1, @n 13.08/4.67 br %2 13.08/4.67 2: 13.08/4.67 %3 = call i32 @__VERIFIER_nondet_int() 13.08/4.67 %4 = icmp ne %3 0 13.08/4.67 br %4, %5, %8 13.08/4.67 5: 13.08/4.67 %6 = load @n 13.08/4.67 %7 = icmp slt %6 30 13.08/4.67 br %8 13.08/4.67 8: 13.08/4.67 %9 = phi [0, %2], [%7, %5] 13.08/4.67 br %9, %10, %13 13.08/4.67 10: 13.08/4.67 %11 = load @n 13.08/4.67 %12 = add %11 1 13.08/4.67 store %12, @n 13.08/4.67 br %2 13.08/4.67 13: 13.08/4.67 %14 = load @n 13.08/4.67 %15 = sext i32 %14 to i64 13.08/4.67 %16 = mul %15 4 13.08/4.67 %17 = call noalias *i8 @malloc(i64 %16) nounwind 13.08/4.67 %18 = bitcast *i8 %17 to *i32 13.08/4.67 store %18, @a 13.08/4.67 %19 = load @n 13.08/4.67 %20 = sext i32 %19 to i64 13.08/4.67 %21 = mul %20 4 13.08/4.67 %22 = call noalias *i8 @malloc(i64 %21) nounwind 13.08/4.67 %23 = bitcast *i8 %22 to *i32 13.08/4.67 store %23, @b 13.08/4.67 %24 = load @n 13.08/4.67 %25 = load @b 13.08/4.67 %26 = getelementptr %25, 1 13.08/4.67 store %26, @b 13.08/4.67 store %24, %25 13.08/4.67 Unnamed Call-Instruction = call BasicVoidType @foo() 13.08/4.67 %27 = load @b 13.08/4.67 %28 = getelementptr %27, -1 13.08/4.67 %29 = load %28 13.08/4.67 %30 = load @n 13.08/4.67 %31 = sub %30 2 13.08/4.67 %32 = sext i32 %31 to i64 13.08/4.67 %33 = load @b 13.08/4.67 %34 = getelementptr %33, %32 13.08/4.67 %35 = load %34 13.08/4.67 %36 = sub %29 %35 13.08/4.67 %37 = icmp ne %36 0 13.08/4.67 br %37, %38, %43 13.08/4.67 38: 13.08/4.67 %39 = load @a 13.08/4.67 %40 = bitcast *i32 %39 to *i8 13.08/4.67 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %40) nounwind 13.08/4.67 %41 = load @b 13.08/4.67 %42 = bitcast *i32 %41 to *i8 13.08/4.67 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %42) nounwind 13.08/4.67 br %49 13.08/4.67 43: 13.08/4.67 %44 = load @a 13.08/4.67 %45 = bitcast *i32 %44 to *i8 13.08/4.67 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %45) nounwind 13.08/4.67 %46 = load @b 13.08/4.67 %47 = getelementptr %46, -1 13.08/4.67 %48 = bitcast *i32 %47 to *i8 13.08/4.67 Unnamed Call-Instruction = call BasicVoidType @free(*i8 %48) nounwind 13.08/4.67 br %49 13.08/4.67 49: 13.08/4.67 ret 0 13.08/4.67 13.08/4.67 13.08/4.67 Analyze Termination of all function calls matching the pattern: 13.08/4.67 main() 13.18/8.91 EOF