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