8.76/3.42 MAYBE 8.76/3.42 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 8.76/3.42 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 8.76/3.42 8.76/3.42 8.76/3.42 Termination of the given C Problem could not be shown: 8.76/3.42 8.76/3.42 (0) C Problem 8.76/3.42 (1) CToLLVMProof [EQUIVALENT, 171 ms] 8.76/3.42 (2) LLVM problem 8.76/3.42 8.76/3.42 8.76/3.42 ---------------------------------------- 8.76/3.42 8.76/3.42 (0) 8.76/3.42 Obligation: 8.76/3.42 c file /export/starexec/sandbox/benchmark/theBenchmark.c 8.76/3.42 ---------------------------------------- 8.76/3.42 8.76/3.42 (1) CToLLVMProof (EQUIVALENT) 8.76/3.42 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 8.76/3.42 ---------------------------------------- 8.76/3.42 8.76/3.42 (2) 8.76/3.42 Obligation: 8.76/3.42 LLVM Problem 8.76/3.42 8.76/3.42 Aliases: 8.76/3.42 8.76/3.42 Data layout: 8.76/3.42 8.76/3.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" 8.76/3.42 8.76/3.42 Machine: 8.76/3.42 8.76/3.42 "x86_64-pc-linux-gnu" 8.76/3.42 8.76/3.42 Type definitions: 8.76/3.42 8.76/3.42 Global variables: 8.76/3.42 8.76/3.42 Function declarations and definitions: 8.76/3.42 8.76/3.42 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 8.76/3.42 *BasicFunctionTypename: "diff" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (A *i32, Alen i32, B *i32, Blen i32, D *i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 8.76/3.42 0: 8.76/3.42 %1 = alloca *i32, align 8 8.76/3.42 %2 = alloca i32, align 4 8.76/3.42 %3 = alloca *i32, align 8 8.76/3.42 %4 = alloca i32, align 4 8.76/3.42 %5 = alloca *i32, align 8 8.76/3.42 %k = alloca i32, align 4 8.76/3.42 %i = alloca i32, align 4 8.76/3.42 %l1 = alloca i32, align 4 8.76/3.42 %l2 = alloca i32, align 4 8.76/3.42 %found = alloca i32, align 4 8.76/3.42 %j = alloca i32, align 4 8.76/3.42 store %A, %1 8.76/3.42 store %Alen, %2 8.76/3.42 store %B, %3 8.76/3.42 store %Blen, %4 8.76/3.42 store %D, %5 8.76/3.42 store 0, %k 8.76/3.42 store 0, %i 8.76/3.42 %6 = load %2 8.76/3.42 store %6, %l1 8.76/3.42 %7 = load %4 8.76/3.42 store %7, %l2 8.76/3.42 br %8 8.76/3.42 8: 8.76/3.42 %9 = load %i 8.76/3.42 %10 = load %l1 8.76/3.42 %11 = icmp slt %9 %10 8.76/3.42 br %11, %12, %58 8.76/3.42 12: 8.76/3.42 store 0, %j 8.76/3.42 store 0, %found 8.76/3.42 br %13 8.76/3.42 13: 8.76/3.42 %14 = load %j 8.76/3.42 %15 = load %l2 8.76/3.42 %16 = icmp slt %14 %15 8.76/3.42 br %16, %17, %21 8.76/3.42 17: 8.76/3.42 %18 = load %found 8.76/3.42 %19 = icmp ne %18 0 8.76/3.42 %20 = xor %19 1 8.76/3.42 br %21 8.76/3.42 21: 8.76/3.42 %22 = phi [0, %13], [%20, %17] 8.76/3.42 br %22, %23, %40 8.76/3.42 23: 8.76/3.42 %24 = load %i 8.76/3.42 %25 = sext i32 %24 to i64 8.76/3.42 %26 = load %1 8.76/3.42 %27 = getelementptr %26, %25 8.76/3.42 %28 = load %27 8.76/3.42 %29 = load %j 8.76/3.42 %30 = sext i32 %29 to i64 8.76/3.42 %31 = load %3 8.76/3.42 %32 = getelementptr %31, %30 8.76/3.42 %33 = load %32 8.76/3.42 %34 = icmp eq %28 %33 8.76/3.42 br %34, %35, %36 8.76/3.42 35: 8.76/3.42 store 1, %found 8.76/3.42 br %39 8.76/3.42 36: 8.76/3.42 %37 = load %j 8.76/3.42 %38 = add %37 1 8.76/3.42 store %38, %j 8.76/3.42 br %39 8.76/3.42 39: 8.76/3.42 br %13 8.76/3.42 40: 8.76/3.42 %41 = load %found 8.76/3.42 %42 = icmp ne %41 0 8.76/3.42 br %42, %55, %43 8.76/3.42 43: 8.76/3.42 %44 = load %i 8.76/3.42 %45 = sext i32 %44 to i64 8.76/3.42 %46 = load %1 8.76/3.42 %47 = getelementptr %46, %45 8.76/3.42 %48 = load %47 8.76/3.42 %49 = load %k 8.76/3.42 %50 = sext i32 %49 to i64 8.76/3.42 %51 = load %5 8.76/3.42 %52 = getelementptr %51, %50 8.76/3.42 store %48, %52 8.76/3.42 %53 = load %k 8.76/3.42 %54 = add %53 1 8.76/3.42 store %54, %k 8.76/3.42 br %55 8.76/3.42 55: 8.76/3.42 %56 = load %i 8.76/3.42 %57 = add %56 1 8.76/3.42 store %57, %i 8.76/3.42 br %8 8.76/3.42 58: 8.76/3.42 ret void 8.76/3.42 8.76/3.42 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 8.76/3.42 0: 8.76/3.42 %1 = alloca i32, align 4 8.76/3.42 %A = alloca *i32, align 8 8.76/3.42 %Alen = alloca i32, align 4 8.76/3.42 %B = alloca *i32, align 8 8.76/3.42 %Blen = alloca i32, align 4 8.76/3.42 %D = alloca *i32, align 8 8.76/3.42 store 0, %1 8.76/3.42 %2 = call i32 @__VERIFIER_nondet_int() 8.76/3.42 store %2, %Alen 8.76/3.42 %3 = call i32 @__VERIFIER_nondet_int() 8.76/3.42 store %3, %Blen 8.76/3.42 %4 = load %A 8.76/3.42 %5 = load %Alen 8.76/3.42 %6 = load %B 8.76/3.42 %7 = load %Blen 8.76/3.42 %8 = load %D 8.76/3.42 Unnamed Call-Instruction = call BasicVoidType @diff(*i32 %4, i32 %5, *i32 %6, i32 %7, *i32 %8) 8.76/3.42 ret 0 8.76/3.42 8.76/3.42 8.76/3.42 Analyze Termination of all function calls matching the pattern: 8.76/3.42 main() 8.76/3.49 EOF