10.74/4.01 MAYBE 10.74/4.02 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 10.74/4.02 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.74/4.02 10.74/4.02 10.74/4.02 Termination of the given C Problem could not be shown: 10.74/4.02 10.74/4.02 (0) C Problem 10.74/4.02 (1) CToLLVMProof [EQUIVALENT, 173 ms] 10.74/4.02 (2) LLVM problem 10.74/4.02 10.74/4.02 10.74/4.02 ---------------------------------------- 10.74/4.02 10.74/4.02 (0) 10.74/4.02 Obligation: 10.74/4.02 c file /export/starexec/sandbox/benchmark/theBenchmark.c 10.74/4.02 ---------------------------------------- 10.74/4.02 10.74/4.02 (1) CToLLVMProof (EQUIVALENT) 10.74/4.02 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 10.74/4.02 ---------------------------------------- 10.74/4.02 10.74/4.02 (2) 10.74/4.02 Obligation: 10.74/4.02 LLVM Problem 10.74/4.02 10.74/4.02 Aliases: 10.74/4.02 10.74/4.02 Data layout: 10.74/4.02 10.74/4.02 "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" 10.74/4.02 10.74/4.02 Machine: 10.74/4.02 10.74/4.02 "x86_64-pc-linux-gnu" 10.74/4.02 10.74/4.02 Type definitions: 10.74/4.02 10.74/4.02 Global variables: 10.74/4.02 10.74/4.02 Function declarations and definitions: 10.74/4.02 10.74/4.02 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 10.74/4.02 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 10.74/4.02 0: 10.74/4.02 %1 = alloca i32, align 4 10.74/4.02 %i = alloca i32, align 4 10.74/4.02 %j = alloca i32, align 4 10.74/4.02 %tmp = alloca i32, align 4 10.74/4.02 %length = alloca i32, align 4 10.74/4.02 %arr = alloca *i32, align 8 10.74/4.02 %a = alloca *i32, align 8 10.74/4.02 %b = alloca *i32, align 8 10.74/4.02 store 0, %1 10.74/4.02 %2 = call i32 @__VERIFIER_nondet_int() 10.74/4.02 store %2, %length 10.74/4.02 %3 = load %length 10.74/4.02 %4 = icmp slt %3 1 10.74/4.02 br %4, %5, %6 10.74/4.02 5: 10.74/4.02 store 1, %length 10.74/4.02 br %6 10.74/4.02 6: 10.74/4.02 %7 = load %length 10.74/4.02 %8 = srem %7 2 10.74/4.02 %9 = icmp eq %8 0 10.74/4.02 br %9, %10, %13 10.74/4.02 10: 10.74/4.02 %11 = load %length 10.74/4.02 %12 = add %11 1 10.74/4.02 store %12, %length 10.74/4.02 br %13 10.74/4.02 13: 10.74/4.02 %14 = load %length 10.74/4.02 %15 = sext i32 %14 to i64 10.74/4.02 %16 = mul %15 4 10.74/4.02 %17 = alloca i8, numElementsLit: %16 10.74/4.02 %18 = bitcast *i8 %17 to *i32 10.74/4.02 store %18, %arr 10.74/4.02 store 0, %i 10.74/4.02 br %19 10.74/4.02 19: 10.74/4.02 %20 = load %i 10.74/4.02 %21 = load %length 10.74/4.02 %22 = icmp slt %20 %21 10.74/4.02 br %22, %23, %41 10.74/4.02 23: 10.74/4.02 %24 = load %i 10.74/4.02 %25 = sext i32 %24 to i64 10.74/4.02 %26 = load %arr 10.74/4.02 %27 = getelementptr %26, %25 10.74/4.02 %28 = load %27 10.74/4.02 %29 = icmp eq %28 0 10.74/4.02 br %29, %30, %37 10.74/4.02 30: 10.74/4.02 %31 = load %i 10.74/4.02 %32 = sext i32 %31 to i64 10.74/4.02 %33 = load %arr 10.74/4.02 %34 = getelementptr %33, %32 10.74/4.02 %35 = load %34 10.74/4.02 %36 = add %35 1 10.74/4.02 store %36, %34 10.74/4.02 br %37 10.74/4.02 37: 10.74/4.02 br %38 10.74/4.02 38: 10.74/4.02 %39 = load %i 10.74/4.02 %40 = add %39 1 10.74/4.02 store %40, %i 10.74/4.02 br %19 10.74/4.02 41: 10.74/4.02 %42 = load %length 10.74/4.02 %43 = sdiv %42 2 10.74/4.02 %44 = add %43 1 10.74/4.02 %45 = sext i32 %44 to i64 10.74/4.02 %46 = load %arr 10.74/4.02 %47 = getelementptr %46, %45 10.74/4.02 store 0, %47 10.74/4.02 %48 = load %arr 10.74/4.02 store %48, %a 10.74/4.02 %49 = load %arr 10.74/4.02 %50 = load %length 10.74/4.02 %51 = sext i32 %50 to i64 10.74/4.02 %52 = getelementptr %49, %51 10.74/4.02 %53 = getelementptr %52, -1 10.74/4.02 store %53, %b 10.74/4.02 br %54 10.74/4.02 54: 10.74/4.02 %55 = load %a 10.74/4.02 %56 = load %55 10.74/4.02 %57 = icmp ne %56 0 10.74/4.02 br %57, %58, %62 10.74/4.02 58: 10.74/4.02 %59 = load %b 10.74/4.02 %60 = load %59 10.74/4.02 %61 = icmp ne %60 0 10.74/4.02 br %62 10.74/4.02 62: 10.74/4.02 %63 = phi [0, %54], [%61, %58] 10.74/4.02 br %63, %64, %76 10.74/4.02 64: 10.74/4.02 %65 = load %a 10.74/4.02 %66 = load %65 10.74/4.02 store %66, %tmp 10.74/4.02 %67 = load %b 10.74/4.02 %68 = load %67 10.74/4.02 %69 = load %a 10.74/4.02 store %68, %69 10.74/4.02 %70 = load %tmp 10.74/4.02 %71 = load %b 10.74/4.02 store %70, %71 10.74/4.02 %72 = load %a 10.74/4.02 %73 = getelementptr %72, 1 10.74/4.02 store %73, %a 10.74/4.02 %74 = load %b 10.74/4.02 %75 = getelementptr %74, -1 10.74/4.02 store %75, %b 10.74/4.02 br %54 10.74/4.02 76: 10.74/4.02 ret 0 10.74/4.02 10.74/4.02 10.74/4.02 Analyze Termination of all function calls matching the pattern: 10.74/4.02 main() 10.74/4.07 EOF