|
|
@@ -1,3555 +0,0 @@
|
|
|
-; ModuleID = 'output/module_fusion.bc'
|
|
|
-source_filename = "llvm-link"
|
|
|
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
-target triple = "x86_64-pc-linux-gnu"
|
|
|
-
|
|
|
-%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, %struct._IO_codecvt*, %struct._IO_wide_data*, %struct._IO_FILE*, i8*, i64, i32, [20 x i8] }
|
|
|
-%struct._IO_marker = type opaque
|
|
|
-%struct._IO_codecvt = type opaque
|
|
|
-%struct._IO_wide_data = type opaque
|
|
|
-%struct.DynamicArray = type { i32*, i32, i32, i32, i32 }
|
|
|
-%struct.Matrix = type { i32**, i32, i32, i32, double }
|
|
|
-%struct.Node = type { i32, %struct.Node*, %struct.Node*, i32, i32 }
|
|
|
-%fused_return_multiplyMatrices_testPoints = type { i32, %struct.Matrix* }
|
|
|
-%struct.Circle = type { %struct.Point, double, i32, [256 x i8] }
|
|
|
-%struct.Point = type { i32, i32, [256 x i8], double }
|
|
|
-%fused_return_calculateDistance_memoizedFib = type { i32, double }
|
|
|
-%fused_return_validateMatrix_processMatrix = type { i32, i32 }
|
|
|
-
|
|
|
-@globalCounter = dso_local global i32 0, align 4
|
|
|
-@globalErrorMessage = dso_local global i8* null, align 8
|
|
|
-@recursionDepth = dso_local global i32 0, align 4
|
|
|
-@.str = private unnamed_addr constant [9 x i8] c"No error\00", align 1
|
|
|
-@stderr = external dso_local global %struct._IO_FILE*, align 8
|
|
|
-@.str.1 = private unnamed_addr constant [55 x i8] c"Critical: Failed to allocate memory for error message\0A\00", align 1
|
|
|
-@.str.2 = private unnamed_addr constant [33 x i8] c"Maximum recursion depth exceeded\00", align 1
|
|
|
-@.str.3 = private unnamed_addr constant [29 x i8] c"Factorial of negative number\00", align 1
|
|
|
-@.str.4 = private unnamed_addr constant [36 x i8] c"Input too large, potential overflow\00", align 1
|
|
|
-@.str.5 = private unnamed_addr constant [31 x i8] c"Factorial calculation overflow\00", align 1
|
|
|
-@.str.6 = private unnamed_addr constant [25 x i8] c"Invalid initial capacity\00", align 1
|
|
|
-@.str.7 = private unnamed_addr constant [46 x i8] c"Initial capacity exceeds maximum allowed size\00", align 1
|
|
|
-@.str.8 = private unnamed_addr constant [49 x i8] c"Memory allocation failed for DynamicArray struct\00", align 1
|
|
|
-@.str.9 = private unnamed_addr constant [35 x i8] c"Memory allocation failed for array\00", align 1
|
|
|
-@.str.10 = private unnamed_addr constant [19 x i8] c"Null array pointer\00", align 1
|
|
|
-@.str.11 = private unnamed_addr constant [25 x i8] c"Array size limit reached\00", align 1
|
|
|
-@.str.12 = private unnamed_addr constant [27 x i8] c"Memory reallocation failed\00", align 1
|
|
|
-@.str.13 = private unnamed_addr constant [46 x i8] c"Maximum recursion depth exceeded in quickSort\00", align 1
|
|
|
-@.str.14 = private unnamed_addr constant [32 x i8] c"Null array pointer in quickSort\00", align 1
|
|
|
-@.str.15 = private unnamed_addr constant [39 x i8] c"Array index out of bounds in quickSort\00", align 1
|
|
|
-@.str.16 = private unnamed_addr constant [28 x i8] c"Matrix dimensions too small\00", align 1
|
|
|
-@.str.17 = private unnamed_addr constant [46 x i8] c"Matrix dimensions exceed maximum allowed size\00", align 1
|
|
|
-@.str.18 = private unnamed_addr constant [43 x i8] c"Memory allocation failed for matrix struct\00", align 1
|
|
|
-@.str.19 = private unnamed_addr constant [41 x i8] c"Memory allocation failed for matrix rows\00", align 1
|
|
|
-@.str.20 = private unnamed_addr constant [44 x i8] c"Memory allocation failed for matrix columns\00", align 1
|
|
|
-@.str.21 = private unnamed_addr constant [20 x i8] c"Null matrix pointer\00", align 1
|
|
|
-@.str.22 = private unnamed_addr constant [20 x i8] c"Invalid matrix data\00", align 1
|
|
|
-@.str.23 = private unnamed_addr constant [45 x i8] c"Invalid matrix dimensions for multiplication\00", align 1
|
|
|
-@.str.24 = private unnamed_addr constant [42 x i8] c"Integer overflow in matrix multiplication\00", align 1
|
|
|
-@.str.25 = private unnamed_addr constant [38 x i8] c"Memory allocation failed for new node\00", align 1
|
|
|
-@insertNode.maxDepth = internal global i32 0, align 4
|
|
|
-@.str.26 = private unnamed_addr constant [34 x i8] c"List exceeds maximum allowed size\00", align 1
|
|
|
-@calculationResult = internal global i32 0, align 4
|
|
|
-@.str.27 = private unnamed_addr constant [30 x i8] c"Final calculation result: %d\0A\00", align 1
|
|
|
-@.str.28 = private unnamed_addr constant [11 x i8] c"Error: %s\0A\00", align 1
|
|
|
-@.str.29 = private unnamed_addr constant [29 x i8] c"Error during array push: %s\0A\00", align 1
|
|
|
-@.str.30 = private unnamed_addr constant [33 x i8] c"Error during list insertion: %s\0A\00", align 1
|
|
|
-@.str.31 = private unnamed_addr constant [43 x i8] c"Circular reference detected in linked list\00", align 1
|
|
|
-@.str.32 = private unnamed_addr constant [22 x i8] c"Invalid point weights\00", align 1
|
|
|
-@.str.33 = private unnamed_addr constant [31 x i8] c"Coordinates out of valid range\00", align 1
|
|
|
-@.str.34 = private unnamed_addr constant [30 x i8] c"Distance calculation overflow\00", align 1
|
|
|
-@.str.35 = private unnamed_addr constant [36 x i8] c"Invalid distance calculation result\00", align 1
|
|
|
-@.str.36 = private unnamed_addr constant [15 x i8] c"Invalid circle\00", align 1
|
|
|
-@.str.37 = private unnamed_addr constant [22 x i8] c"Invalid circle radius\00", align 1
|
|
|
-@.str.38 = private unnamed_addr constant [24 x i8] c"Circle radius too large\00", align 1
|
|
|
-@.str.39 = private unnamed_addr constant [45 x i8] c"Circle center coordinates out of valid range\00", align 1
|
|
|
-@.str.40 = private unnamed_addr constant [26 x i8] c"Area calculation overflow\00", align 1
|
|
|
-@.str.41 = private unnamed_addr constant [9 x i8] c"standard\00", align 1
|
|
|
-@.str.42 = private unnamed_addr constant [9 x i8] c"weighted\00", align 1
|
|
|
-@.str.43 = private unnamed_addr constant [35 x i8] c"Invalid weight for weighted circle\00", align 1
|
|
|
-@.str.44 = private unnamed_addr constant [20 x i8] c"Unknown circle type\00", align 1
|
|
|
-@.str.45 = private unnamed_addr constant [17 x i8] c"Null matrix data\00", align 1
|
|
|
-@.str.46 = private unnamed_addr constant [28 x i8] c"Matrix dimensions too large\00", align 1
|
|
|
-@.str.47 = private unnamed_addr constant [27 x i8] c"Invalid matrix row pointer\00", align 1
|
|
|
-@.str.48 = private unnamed_addr constant [32 x i8] c"Inconsistent square matrix flag\00", align 1
|
|
|
-@.str.49 = private unnamed_addr constant [14 x i8] c"Invalid array\00", align 1
|
|
|
-@.str.50 = private unnamed_addr constant [21 x i8] c"Invalid points array\00", align 1
|
|
|
-@.str.51 = private unnamed_addr constant [16 x i8] c"Too many points\00", align 1
|
|
|
-@.str.52 = private unnamed_addr constant [39 x i8] c"Failed to allocate memory for centroid\00", align 1
|
|
|
-@.str.53 = private unnamed_addr constant [21 x i8] c"Invalid point weight\00", align 1
|
|
|
-@.str.54 = private unnamed_addr constant [30 x i8] c"Centroid calculation overflow\00", align 1
|
|
|
-@.str.55 = private unnamed_addr constant [21 x i8] c"Total weight is zero\00", align 1
|
|
|
-@.str.56 = private unnamed_addr constant [9 x i8] c"Centroid\00", align 1
|
|
|
-@cache = internal global [100 x i32] zeroinitializer, align 16
|
|
|
-@__const.projectB_main.str = private unnamed_addr constant [14 x i8] c"Hello, World!\00", align 1
|
|
|
-@__const.projectB_main.arr = private unnamed_addr constant [8 x i32] [i32 10, i32 22, i32 9, i32 33, i32 21, i32 50, i32 41, i32 60], align 16
|
|
|
-@__const.projectB_main.matrix = private unnamed_addr constant <{ <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, [97 x <{ i32, i32, i32, [97 x i32] }>] }> <{ <{ i32, i32, i32, [97 x i32] }> <{ i32 1, i32 2, i32 3, [97 x i32] zeroinitializer }>, <{ i32, i32, i32, [97 x i32] }> <{ i32 4, i32 5, i32 6, [97 x i32] zeroinitializer }>, <{ i32, i32, i32, [97 x i32] }> <{ i32 7, i32 8, i32 9, [97 x i32] zeroinitializer }>, [97 x <{ i32, i32, i32, [97 x i32] }>] zeroinitializer }>, align 16
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local void @setErrorMessage(i8* %0) #0 !project_source !2 {
|
|
|
- %2 = alloca i8*, align 8
|
|
|
- store i8* %0, i8** %2, align 8
|
|
|
- %3 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- %4 = icmp ne i8* %3, null
|
|
|
- br i1 %4, label %5, label %7
|
|
|
-
|
|
|
-5: ; preds = %1
|
|
|
- %6 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- call void @free(i8* %6) #7
|
|
|
- br label %7
|
|
|
-
|
|
|
-7: ; preds = %5, %1
|
|
|
- %8 = load i8*, i8** %2, align 8
|
|
|
- %9 = icmp ne i8* %8, null
|
|
|
- br i1 %9, label %10, label %19
|
|
|
-
|
|
|
-10: ; preds = %7
|
|
|
- %11 = load i8*, i8** %2, align 8
|
|
|
- %12 = call noalias i8* @strdup(i8* %11) #7
|
|
|
- store i8* %12, i8** @globalErrorMessage, align 8
|
|
|
- %13 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- %14 = icmp eq i8* %13, null
|
|
|
- br i1 %14, label %15, label %18
|
|
|
-
|
|
|
-15: ; preds = %10
|
|
|
- %16 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8
|
|
|
- %17 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %16, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0))
|
|
|
- br label %18
|
|
|
-
|
|
|
-18: ; preds = %15, %10
|
|
|
- br label %20
|
|
|
-
|
|
|
-19: ; preds = %7
|
|
|
- store i8* null, i8** @globalErrorMessage, align 8
|
|
|
- br label %20
|
|
|
-
|
|
|
-20: ; preds = %19, %18
|
|
|
- ret void
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local void @free(i8*) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local noalias i8* @strdup(i8*) #1
|
|
|
-
|
|
|
-declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #2
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local i32 @factorial(i32 %0) #0 !project_source !2 {
|
|
|
- %2 = alloca i32, align 4
|
|
|
- %3 = alloca i32, align 4
|
|
|
- %4 = alloca i32, align 4
|
|
|
- %5 = alloca i32, align 4
|
|
|
- store i32 %0, i32* %3, align 4
|
|
|
- %6 = load i32, i32* @recursionDepth, align 4
|
|
|
- %7 = add nsw i32 %6, 1
|
|
|
- store i32 %7, i32* @recursionDepth, align 4
|
|
|
- %8 = icmp sgt i32 %7, 1000
|
|
|
- br i1 %8, label %9, label %12
|
|
|
-
|
|
|
-9: ; preds = %1
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0))
|
|
|
- %10 = load i32, i32* @recursionDepth, align 4
|
|
|
- %11 = add nsw i32 %10, -1
|
|
|
- store i32 %11, i32* @recursionDepth, align 4
|
|
|
- store i32 -1, i32* %2, align 4
|
|
|
- br label %53
|
|
|
-
|
|
|
-12: ; preds = %1
|
|
|
- %13 = load i32, i32* %3, align 4
|
|
|
- %14 = icmp slt i32 %13, 0
|
|
|
- br i1 %14, label %15, label %18
|
|
|
-
|
|
|
-15: ; preds = %12
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
|
|
|
- %16 = load i32, i32* @recursionDepth, align 4
|
|
|
- %17 = add nsw i32 %16, -1
|
|
|
- store i32 %17, i32* @recursionDepth, align 4
|
|
|
- store i32 -1, i32* %2, align 4
|
|
|
- br label %53
|
|
|
-
|
|
|
-18: ; preds = %12
|
|
|
- %19 = load i32, i32* %3, align 4
|
|
|
- %20 = icmp sgt i32 %19, 20
|
|
|
- br i1 %20, label %21, label %24
|
|
|
-
|
|
|
-21: ; preds = %18
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0))
|
|
|
- %22 = load i32, i32* @recursionDepth, align 4
|
|
|
- %23 = add nsw i32 %22, -1
|
|
|
- store i32 %23, i32* @recursionDepth, align 4
|
|
|
- store i32 -1, i32* %2, align 4
|
|
|
- br label %53
|
|
|
-
|
|
|
-24: ; preds = %18
|
|
|
- %25 = load i32, i32* %3, align 4
|
|
|
- %26 = icmp sle i32 %25, 1
|
|
|
- br i1 %26, label %27, label %28
|
|
|
-
|
|
|
-27: ; preds = %24
|
|
|
- store i32 1, i32* %4, align 4
|
|
|
- br label %49
|
|
|
-
|
|
|
-28: ; preds = %24
|
|
|
- %29 = load i32, i32* %3, align 4
|
|
|
- %30 = sub nsw i32 %29, 1
|
|
|
- %31 = call i32 @factorial(i32 %30)
|
|
|
- store i32 %31, i32* %5, align 4
|
|
|
- %32 = load i32, i32* %5, align 4
|
|
|
- %33 = icmp eq i32 %32, -1
|
|
|
- br i1 %33, label %34, label %37
|
|
|
-
|
|
|
-34: ; preds = %28
|
|
|
- %35 = load i32, i32* @recursionDepth, align 4
|
|
|
- %36 = add nsw i32 %35, -1
|
|
|
- store i32 %36, i32* @recursionDepth, align 4
|
|
|
- store i32 -1, i32* %2, align 4
|
|
|
- br label %53
|
|
|
-
|
|
|
-37: ; preds = %28
|
|
|
- %38 = load i32, i32* %5, align 4
|
|
|
- %39 = load i32, i32* %3, align 4
|
|
|
- %40 = sdiv i32 2147483647, %39
|
|
|
- %41 = icmp sgt i32 %38, %40
|
|
|
- br i1 %41, label %42, label %45
|
|
|
-
|
|
|
-42: ; preds = %37
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0))
|
|
|
- %43 = load i32, i32* @recursionDepth, align 4
|
|
|
- %44 = add nsw i32 %43, -1
|
|
|
- store i32 %44, i32* @recursionDepth, align 4
|
|
|
- store i32 -1, i32* %2, align 4
|
|
|
- br label %53
|
|
|
-
|
|
|
-45: ; preds = %37
|
|
|
- %46 = load i32, i32* %3, align 4
|
|
|
- %47 = load i32, i32* %5, align 4
|
|
|
- %48 = mul nsw i32 %46, %47
|
|
|
- store i32 %48, i32* %4, align 4
|
|
|
- br label %49
|
|
|
-
|
|
|
-49: ; preds = %45, %27
|
|
|
- %50 = load i32, i32* @recursionDepth, align 4
|
|
|
- %51 = add nsw i32 %50, -1
|
|
|
- store i32 %51, i32* @recursionDepth, align 4
|
|
|
- %52 = load i32, i32* %4, align 4
|
|
|
- store i32 %52, i32* %2, align 4
|
|
|
- br label %53
|
|
|
-
|
|
|
-53: ; preds = %49, %42, %34, %21, %15, %9
|
|
|
- %54 = load i32, i32* %2, align 4
|
|
|
- ret i32 %54
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local %struct.DynamicArray* @createDynamicArray(i32 %0) #0 !project_source !2 {
|
|
|
- %2 = alloca %struct.DynamicArray*, align 8
|
|
|
- %3 = alloca i32, align 4
|
|
|
- %4 = alloca %struct.DynamicArray*, align 8
|
|
|
- store i32 %0, i32* %3, align 4
|
|
|
- %5 = load i32, i32* %3, align 4
|
|
|
- %6 = icmp sle i32 %5, 0
|
|
|
- br i1 %6, label %7, label %8
|
|
|
-
|
|
|
-7: ; preds = %1
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0))
|
|
|
- store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8
|
|
|
- br label %44
|
|
|
-
|
|
|
-8: ; preds = %1
|
|
|
- %9 = load i32, i32* %3, align 4
|
|
|
- %10 = icmp sgt i32 %9, 1000
|
|
|
- br i1 %10, label %11, label %12
|
|
|
-
|
|
|
-11: ; preds = %8
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
|
|
|
- store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8
|
|
|
- br label %44
|
|
|
-
|
|
|
-12: ; preds = %8
|
|
|
- %13 = call noalias i8* @malloc(i64 24) #7
|
|
|
- %14 = bitcast i8* %13 to %struct.DynamicArray*
|
|
|
- store %struct.DynamicArray* %14, %struct.DynamicArray** %4, align 8
|
|
|
- %15 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %16 = icmp ne %struct.DynamicArray* %15, null
|
|
|
- br i1 %16, label %18, label %17
|
|
|
-
|
|
|
-17: ; preds = %12
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.8, i64 0, i64 0))
|
|
|
- store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8
|
|
|
- br label %44
|
|
|
-
|
|
|
-18: ; preds = %12
|
|
|
- %19 = load i32, i32* %3, align 4
|
|
|
- %20 = sext i32 %19 to i64
|
|
|
- %21 = mul i64 4, %20
|
|
|
- %22 = call noalias i8* @malloc(i64 %21) #7
|
|
|
- %23 = bitcast i8* %22 to i32*
|
|
|
- %24 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %25 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %24, i32 0, i32 0
|
|
|
- store i32* %23, i32** %25, align 8
|
|
|
- %26 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %27 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %26, i32 0, i32 0
|
|
|
- %28 = load i32*, i32** %27, align 8
|
|
|
- %29 = icmp ne i32* %28, null
|
|
|
- br i1 %29, label %33, label %30
|
|
|
-
|
|
|
-30: ; preds = %18
|
|
|
- %31 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %32 = bitcast %struct.DynamicArray* %31 to i8*
|
|
|
- call void @free(i8* %32) #7
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i64 0, i64 0))
|
|
|
- store %struct.DynamicArray* null, %struct.DynamicArray** %2, align 8
|
|
|
- br label %44
|
|
|
-
|
|
|
-33: ; preds = %18
|
|
|
- %34 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %35 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %34, i32 0, i32 1
|
|
|
- store i32 0, i32* %35, align 8
|
|
|
- %36 = load i32, i32* %3, align 4
|
|
|
- %37 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %38 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %37, i32 0, i32 2
|
|
|
- store i32 %36, i32* %38, align 4
|
|
|
- %39 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %40 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %39, i32 0, i32 3
|
|
|
- store i32 1, i32* %40, align 8
|
|
|
- %41 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- %42 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %41, i32 0, i32 4
|
|
|
- store i32 0, i32* %42, align 4
|
|
|
- %43 = load %struct.DynamicArray*, %struct.DynamicArray** %4, align 8
|
|
|
- store %struct.DynamicArray* %43, %struct.DynamicArray** %2, align 8
|
|
|
- br label %44
|
|
|
-
|
|
|
-44: ; preds = %33, %30, %17, %11, %7
|
|
|
- %45 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- ret %struct.DynamicArray* %45
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local noalias i8* @malloc(i64) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local i8* @realloc(i8*, i64) #1
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local void @quickSort(i32* %0, i32 %1, i32 %2, i32* %3) #0 !project_source !2 {
|
|
|
- %5 = alloca i32*, align 8
|
|
|
- %6 = alloca i32, align 4
|
|
|
- %7 = alloca i32, align 4
|
|
|
- %8 = alloca i32*, align 8
|
|
|
- %9 = alloca i32, align 4
|
|
|
- %10 = alloca i32, align 4
|
|
|
- %11 = alloca i32, align 4
|
|
|
- %12 = alloca i32, align 4
|
|
|
- %13 = alloca i32, align 4
|
|
|
- %14 = alloca i32, align 4
|
|
|
- store i32* %0, i32** %5, align 8
|
|
|
- store i32 %1, i32* %6, align 4
|
|
|
- store i32 %2, i32* %7, align 4
|
|
|
- store i32* %3, i32** %8, align 8
|
|
|
- %15 = load i32, i32* @recursionDepth, align 4
|
|
|
- %16 = add nsw i32 %15, 1
|
|
|
- store i32 %16, i32* @recursionDepth, align 4
|
|
|
- %17 = icmp sgt i32 %16, 1000
|
|
|
- br i1 %17, label %18, label %22
|
|
|
-
|
|
|
-18: ; preds = %4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.13, i64 0, i64 0))
|
|
|
- %19 = load i32*, i32** %8, align 8
|
|
|
- store i32 1, i32* %19, align 4
|
|
|
- %20 = load i32, i32* @recursionDepth, align 4
|
|
|
- %21 = add nsw i32 %20, -1
|
|
|
- store i32 %21, i32* @recursionDepth, align 4
|
|
|
- br label %247
|
|
|
-
|
|
|
-22: ; preds = %4
|
|
|
- %23 = load i32*, i32** %5, align 8
|
|
|
- %24 = icmp ne i32* %23, null
|
|
|
- br i1 %24, label %29, label %25
|
|
|
-
|
|
|
-25: ; preds = %22
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.14, i64 0, i64 0))
|
|
|
- %26 = load i32*, i32** %8, align 8
|
|
|
- store i32 1, i32* %26, align 4
|
|
|
- %27 = load i32, i32* @recursionDepth, align 4
|
|
|
- %28 = add nsw i32 %27, -1
|
|
|
- store i32 %28, i32* @recursionDepth, align 4
|
|
|
- br label %247
|
|
|
-
|
|
|
-29: ; preds = %22
|
|
|
- %30 = load i32, i32* %6, align 4
|
|
|
- %31 = icmp slt i32 %30, 0
|
|
|
- br i1 %31, label %41, label %32
|
|
|
-
|
|
|
-32: ; preds = %29
|
|
|
- %33 = load i32, i32* %7, align 4
|
|
|
- %34 = icmp slt i32 %33, 0
|
|
|
- br i1 %34, label %41, label %35
|
|
|
-
|
|
|
-35: ; preds = %32
|
|
|
- %36 = load i32, i32* %6, align 4
|
|
|
- %37 = icmp sge i32 %36, 1000
|
|
|
- br i1 %37, label %41, label %38
|
|
|
-
|
|
|
-38: ; preds = %35
|
|
|
- %39 = load i32, i32* %7, align 4
|
|
|
- %40 = icmp sge i32 %39, 1000
|
|
|
- br i1 %40, label %41, label %45
|
|
|
-
|
|
|
-41: ; preds = %38, %35, %32, %29
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0))
|
|
|
- %42 = load i32*, i32** %8, align 8
|
|
|
- store i32 1, i32* %42, align 4
|
|
|
- %43 = load i32, i32* @recursionDepth, align 4
|
|
|
- %44 = add nsw i32 %43, -1
|
|
|
- store i32 %44, i32* @recursionDepth, align 4
|
|
|
- br label %247
|
|
|
-
|
|
|
-45: ; preds = %38
|
|
|
- %46 = load i32, i32* %6, align 4
|
|
|
- %47 = load i32, i32* %7, align 4
|
|
|
- %48 = icmp slt i32 %46, %47
|
|
|
- br i1 %48, label %49, label %244
|
|
|
-
|
|
|
-49: ; preds = %45
|
|
|
- %50 = load i32, i32* %6, align 4
|
|
|
- %51 = load i32, i32* %7, align 4
|
|
|
- %52 = load i32, i32* %6, align 4
|
|
|
- %53 = sub nsw i32 %51, %52
|
|
|
- %54 = sdiv i32 %53, 2
|
|
|
- %55 = add nsw i32 %50, %54
|
|
|
- store i32 %55, i32* %9, align 4
|
|
|
- %56 = load i32*, i32** %5, align 8
|
|
|
- %57 = load i32, i32* %6, align 4
|
|
|
- %58 = sext i32 %57 to i64
|
|
|
- %59 = getelementptr inbounds i32, i32* %56, i64 %58
|
|
|
- %60 = load i32, i32* %59, align 4
|
|
|
- %61 = load i32*, i32** %5, align 8
|
|
|
- %62 = load i32, i32* %9, align 4
|
|
|
- %63 = sext i32 %62 to i64
|
|
|
- %64 = getelementptr inbounds i32, i32* %61, i64 %63
|
|
|
- %65 = load i32, i32* %64, align 4
|
|
|
- %66 = icmp sle i32 %60, %65
|
|
|
- br i1 %66, label %67, label %99
|
|
|
-
|
|
|
-67: ; preds = %49
|
|
|
- %68 = load i32*, i32** %5, align 8
|
|
|
- %69 = load i32, i32* %9, align 4
|
|
|
- %70 = sext i32 %69 to i64
|
|
|
- %71 = getelementptr inbounds i32, i32* %68, i64 %70
|
|
|
- %72 = load i32, i32* %71, align 4
|
|
|
- %73 = load i32*, i32** %5, align 8
|
|
|
- %74 = load i32, i32* %7, align 4
|
|
|
- %75 = sext i32 %74 to i64
|
|
|
- %76 = getelementptr inbounds i32, i32* %73, i64 %75
|
|
|
- %77 = load i32, i32* %76, align 4
|
|
|
- %78 = icmp sle i32 %72, %77
|
|
|
- br i1 %78, label %79, label %81
|
|
|
-
|
|
|
-79: ; preds = %67
|
|
|
- %80 = load i32, i32* %9, align 4
|
|
|
- store i32 %80, i32* %10, align 4
|
|
|
- br label %98
|
|
|
-
|
|
|
-81: ; preds = %67
|
|
|
- %82 = load i32*, i32** %5, align 8
|
|
|
- %83 = load i32, i32* %6, align 4
|
|
|
- %84 = sext i32 %83 to i64
|
|
|
- %85 = getelementptr inbounds i32, i32* %82, i64 %84
|
|
|
- %86 = load i32, i32* %85, align 4
|
|
|
- %87 = load i32*, i32** %5, align 8
|
|
|
- %88 = load i32, i32* %7, align 4
|
|
|
- %89 = sext i32 %88 to i64
|
|
|
- %90 = getelementptr inbounds i32, i32* %87, i64 %89
|
|
|
- %91 = load i32, i32* %90, align 4
|
|
|
- %92 = icmp sle i32 %86, %91
|
|
|
- br i1 %92, label %93, label %95
|
|
|
-
|
|
|
-93: ; preds = %81
|
|
|
- %94 = load i32, i32* %7, align 4
|
|
|
- store i32 %94, i32* %10, align 4
|
|
|
- br label %97
|
|
|
-
|
|
|
-95: ; preds = %81
|
|
|
- %96 = load i32, i32* %6, align 4
|
|
|
- store i32 %96, i32* %10, align 4
|
|
|
- br label %97
|
|
|
-
|
|
|
-97: ; preds = %95, %93
|
|
|
- br label %98
|
|
|
-
|
|
|
-98: ; preds = %97, %79
|
|
|
- br label %131
|
|
|
-
|
|
|
-99: ; preds = %49
|
|
|
- %100 = load i32*, i32** %5, align 8
|
|
|
- %101 = load i32, i32* %6, align 4
|
|
|
- %102 = sext i32 %101 to i64
|
|
|
- %103 = getelementptr inbounds i32, i32* %100, i64 %102
|
|
|
- %104 = load i32, i32* %103, align 4
|
|
|
- %105 = load i32*, i32** %5, align 8
|
|
|
- %106 = load i32, i32* %7, align 4
|
|
|
- %107 = sext i32 %106 to i64
|
|
|
- %108 = getelementptr inbounds i32, i32* %105, i64 %107
|
|
|
- %109 = load i32, i32* %108, align 4
|
|
|
- %110 = icmp sle i32 %104, %109
|
|
|
- br i1 %110, label %111, label %113
|
|
|
-
|
|
|
-111: ; preds = %99
|
|
|
- %112 = load i32, i32* %6, align 4
|
|
|
- store i32 %112, i32* %10, align 4
|
|
|
- br label %130
|
|
|
-
|
|
|
-113: ; preds = %99
|
|
|
- %114 = load i32*, i32** %5, align 8
|
|
|
- %115 = load i32, i32* %9, align 4
|
|
|
- %116 = sext i32 %115 to i64
|
|
|
- %117 = getelementptr inbounds i32, i32* %114, i64 %116
|
|
|
- %118 = load i32, i32* %117, align 4
|
|
|
- %119 = load i32*, i32** %5, align 8
|
|
|
- %120 = load i32, i32* %7, align 4
|
|
|
- %121 = sext i32 %120 to i64
|
|
|
- %122 = getelementptr inbounds i32, i32* %119, i64 %121
|
|
|
- %123 = load i32, i32* %122, align 4
|
|
|
- %124 = icmp sle i32 %118, %123
|
|
|
- br i1 %124, label %125, label %127
|
|
|
-
|
|
|
-125: ; preds = %113
|
|
|
- %126 = load i32, i32* %7, align 4
|
|
|
- store i32 %126, i32* %10, align 4
|
|
|
- br label %129
|
|
|
-
|
|
|
-127: ; preds = %113
|
|
|
- %128 = load i32, i32* %9, align 4
|
|
|
- store i32 %128, i32* %10, align 4
|
|
|
- br label %129
|
|
|
-
|
|
|
-129: ; preds = %127, %125
|
|
|
- br label %130
|
|
|
-
|
|
|
-130: ; preds = %129, %111
|
|
|
- br label %131
|
|
|
-
|
|
|
-131: ; preds = %130, %98
|
|
|
- %132 = load i32*, i32** %5, align 8
|
|
|
- %133 = load i32, i32* %7, align 4
|
|
|
- %134 = sext i32 %133 to i64
|
|
|
- %135 = getelementptr inbounds i32, i32* %132, i64 %134
|
|
|
- %136 = load i32, i32* %135, align 4
|
|
|
- store i32 %136, i32* %11, align 4
|
|
|
- %137 = load i32*, i32** %5, align 8
|
|
|
- %138 = load i32, i32* %10, align 4
|
|
|
- %139 = sext i32 %138 to i64
|
|
|
- %140 = getelementptr inbounds i32, i32* %137, i64 %139
|
|
|
- %141 = load i32, i32* %140, align 4
|
|
|
- %142 = load i32*, i32** %5, align 8
|
|
|
- %143 = load i32, i32* %7, align 4
|
|
|
- %144 = sext i32 %143 to i64
|
|
|
- %145 = getelementptr inbounds i32, i32* %142, i64 %144
|
|
|
- store i32 %141, i32* %145, align 4
|
|
|
- %146 = load i32, i32* %11, align 4
|
|
|
- %147 = load i32*, i32** %5, align 8
|
|
|
- %148 = load i32, i32* %10, align 4
|
|
|
- %149 = sext i32 %148 to i64
|
|
|
- %150 = getelementptr inbounds i32, i32* %147, i64 %149
|
|
|
- store i32 %146, i32* %150, align 4
|
|
|
- %151 = load i32*, i32** %5, align 8
|
|
|
- %152 = load i32, i32* %7, align 4
|
|
|
- %153 = sext i32 %152 to i64
|
|
|
- %154 = getelementptr inbounds i32, i32* %151, i64 %153
|
|
|
- %155 = load i32, i32* %154, align 4
|
|
|
- store i32 %155, i32* %12, align 4
|
|
|
- %156 = load i32, i32* %6, align 4
|
|
|
- %157 = sub nsw i32 %156, 1
|
|
|
- store i32 %157, i32* %13, align 4
|
|
|
- %158 = load i32, i32* %6, align 4
|
|
|
- store i32 %158, i32* %14, align 4
|
|
|
- br label %159
|
|
|
-
|
|
|
-159: ; preds = %196, %131
|
|
|
- %160 = load i32, i32* %14, align 4
|
|
|
- %161 = load i32, i32* %7, align 4
|
|
|
- %162 = icmp slt i32 %160, %161
|
|
|
- br i1 %162, label %163, label %199
|
|
|
-
|
|
|
-163: ; preds = %159
|
|
|
- %164 = load i32*, i32** %5, align 8
|
|
|
- %165 = load i32, i32* %14, align 4
|
|
|
- %166 = sext i32 %165 to i64
|
|
|
- %167 = getelementptr inbounds i32, i32* %164, i64 %166
|
|
|
- %168 = load i32, i32* %167, align 4
|
|
|
- %169 = load i32, i32* %12, align 4
|
|
|
- %170 = icmp sle i32 %168, %169
|
|
|
- br i1 %170, label %171, label %195
|
|
|
-
|
|
|
-171: ; preds = %163
|
|
|
- %172 = load i32, i32* %13, align 4
|
|
|
- %173 = add nsw i32 %172, 1
|
|
|
- store i32 %173, i32* %13, align 4
|
|
|
- %174 = load i32*, i32** %5, align 8
|
|
|
- %175 = load i32, i32* %13, align 4
|
|
|
- %176 = sext i32 %175 to i64
|
|
|
- %177 = getelementptr inbounds i32, i32* %174, i64 %176
|
|
|
- %178 = load i32, i32* %177, align 4
|
|
|
- store i32 %178, i32* %11, align 4
|
|
|
- %179 = load i32*, i32** %5, align 8
|
|
|
- %180 = load i32, i32* %14, align 4
|
|
|
- %181 = sext i32 %180 to i64
|
|
|
- %182 = getelementptr inbounds i32, i32* %179, i64 %181
|
|
|
- %183 = load i32, i32* %182, align 4
|
|
|
- %184 = load i32*, i32** %5, align 8
|
|
|
- %185 = load i32, i32* %13, align 4
|
|
|
- %186 = sext i32 %185 to i64
|
|
|
- %187 = getelementptr inbounds i32, i32* %184, i64 %186
|
|
|
- store i32 %183, i32* %187, align 4
|
|
|
- %188 = load i32, i32* %11, align 4
|
|
|
- %189 = load i32*, i32** %5, align 8
|
|
|
- %190 = load i32, i32* %14, align 4
|
|
|
- %191 = sext i32 %190 to i64
|
|
|
- %192 = getelementptr inbounds i32, i32* %189, i64 %191
|
|
|
- store i32 %188, i32* %192, align 4
|
|
|
- %193 = load i32, i32* @globalCounter, align 4
|
|
|
- %194 = add nsw i32 %193, 1
|
|
|
- store i32 %194, i32* @globalCounter, align 4
|
|
|
- br label %195
|
|
|
-
|
|
|
-195: ; preds = %171, %163
|
|
|
- br label %196
|
|
|
-
|
|
|
-196: ; preds = %195
|
|
|
- %197 = load i32, i32* %14, align 4
|
|
|
- %198 = add nsw i32 %197, 1
|
|
|
- store i32 %198, i32* %14, align 4
|
|
|
- br label %159
|
|
|
-
|
|
|
-199: ; preds = %159
|
|
|
- %200 = load i32*, i32** %5, align 8
|
|
|
- %201 = load i32, i32* %13, align 4
|
|
|
- %202 = add nsw i32 %201, 1
|
|
|
- %203 = sext i32 %202 to i64
|
|
|
- %204 = getelementptr inbounds i32, i32* %200, i64 %203
|
|
|
- %205 = load i32, i32* %204, align 4
|
|
|
- store i32 %205, i32* %11, align 4
|
|
|
- %206 = load i32*, i32** %5, align 8
|
|
|
- %207 = load i32, i32* %7, align 4
|
|
|
- %208 = sext i32 %207 to i64
|
|
|
- %209 = getelementptr inbounds i32, i32* %206, i64 %208
|
|
|
- %210 = load i32, i32* %209, align 4
|
|
|
- %211 = load i32*, i32** %5, align 8
|
|
|
- %212 = load i32, i32* %13, align 4
|
|
|
- %213 = add nsw i32 %212, 1
|
|
|
- %214 = sext i32 %213 to i64
|
|
|
- %215 = getelementptr inbounds i32, i32* %211, i64 %214
|
|
|
- store i32 %210, i32* %215, align 4
|
|
|
- %216 = load i32, i32* %11, align 4
|
|
|
- %217 = load i32*, i32** %5, align 8
|
|
|
- %218 = load i32, i32* %7, align 4
|
|
|
- %219 = sext i32 %218 to i64
|
|
|
- %220 = getelementptr inbounds i32, i32* %217, i64 %219
|
|
|
- store i32 %216, i32* %220, align 4
|
|
|
- %221 = load i32*, i32** %5, align 8
|
|
|
- %222 = load i32, i32* %6, align 4
|
|
|
- %223 = load i32, i32* %13, align 4
|
|
|
- %224 = load i32*, i32** %8, align 8
|
|
|
- call void @quickSort(i32* %221, i32 %222, i32 %223, i32* %224)
|
|
|
- %225 = load i32*, i32** %8, align 8
|
|
|
- %226 = load i32, i32* %225, align 4
|
|
|
- %227 = icmp ne i32 %226, 0
|
|
|
- br i1 %227, label %228, label %231
|
|
|
-
|
|
|
-228: ; preds = %199
|
|
|
- %229 = load i32, i32* @recursionDepth, align 4
|
|
|
- %230 = add nsw i32 %229, -1
|
|
|
- store i32 %230, i32* @recursionDepth, align 4
|
|
|
- br label %247
|
|
|
-
|
|
|
-231: ; preds = %199
|
|
|
- %232 = load i32*, i32** %5, align 8
|
|
|
- %233 = load i32, i32* %13, align 4
|
|
|
- %234 = add nsw i32 %233, 2
|
|
|
- %235 = load i32, i32* %7, align 4
|
|
|
- %236 = load i32*, i32** %8, align 8
|
|
|
- call void @quickSort(i32* %232, i32 %234, i32 %235, i32* %236)
|
|
|
- %237 = load i32*, i32** %8, align 8
|
|
|
- %238 = load i32, i32* %237, align 4
|
|
|
- %239 = icmp ne i32 %238, 0
|
|
|
- br i1 %239, label %240, label %243
|
|
|
-
|
|
|
-240: ; preds = %231
|
|
|
- %241 = load i32, i32* @recursionDepth, align 4
|
|
|
- %242 = add nsw i32 %241, -1
|
|
|
- store i32 %242, i32* @recursionDepth, align 4
|
|
|
- br label %247
|
|
|
-
|
|
|
-243: ; preds = %231
|
|
|
- br label %244
|
|
|
-
|
|
|
-244: ; preds = %243, %45
|
|
|
- %245 = load i32, i32* @recursionDepth, align 4
|
|
|
- %246 = add nsw i32 %245, -1
|
|
|
- store i32 %246, i32* @recursionDepth, align 4
|
|
|
- br label %247
|
|
|
-
|
|
|
-247: ; preds = %244, %240, %228, %41, %25, %18
|
|
|
- ret void
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local %struct.Matrix* @createMatrix(i32 %0, i32 %1) #0 !project_source !2 {
|
|
|
- %3 = alloca %struct.Matrix*, align 8
|
|
|
- %4 = alloca i32, align 4
|
|
|
- %5 = alloca i32, align 4
|
|
|
- %6 = alloca %struct.Matrix*, align 8
|
|
|
- %7 = alloca i32, align 4
|
|
|
- %8 = alloca i32, align 4
|
|
|
- store i32 %0, i32* %4, align 4
|
|
|
- store i32 %1, i32* %5, align 4
|
|
|
- %9 = load i32, i32* %4, align 4
|
|
|
- %10 = icmp slt i32 %9, 1
|
|
|
- br i1 %10, label %14, label %11
|
|
|
-
|
|
|
-11: ; preds = %2
|
|
|
- %12 = load i32, i32* %5, align 4
|
|
|
- %13 = icmp slt i32 %12, 1
|
|
|
- br i1 %13, label %14, label %15
|
|
|
-
|
|
|
-14: ; preds = %11, %2
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %3, align 8
|
|
|
- br label %111
|
|
|
-
|
|
|
-15: ; preds = %11
|
|
|
- %16 = load i32, i32* %4, align 4
|
|
|
- %17 = icmp sgt i32 %16, 100
|
|
|
- br i1 %17, label %21, label %18
|
|
|
-
|
|
|
-18: ; preds = %15
|
|
|
- %19 = load i32, i32* %5, align 4
|
|
|
- %20 = icmp sgt i32 %19, 100
|
|
|
- br i1 %20, label %21, label %22
|
|
|
-
|
|
|
-21: ; preds = %18, %15
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %3, align 8
|
|
|
- br label %111
|
|
|
-
|
|
|
-22: ; preds = %18
|
|
|
- %23 = call noalias i8* @malloc(i64 32) #7
|
|
|
- %24 = bitcast i8* %23 to %struct.Matrix*
|
|
|
- store %struct.Matrix* %24, %struct.Matrix** %6, align 8
|
|
|
- %25 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %26 = icmp ne %struct.Matrix* %25, null
|
|
|
- br i1 %26, label %28, label %27
|
|
|
-
|
|
|
-27: ; preds = %22
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.18, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %3, align 8
|
|
|
- br label %111
|
|
|
-
|
|
|
-28: ; preds = %22
|
|
|
- %29 = load i32, i32* %4, align 4
|
|
|
- %30 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %31 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %30, i32 0, i32 1
|
|
|
- store i32 %29, i32* %31, align 8
|
|
|
- %32 = load i32, i32* %5, align 4
|
|
|
- %33 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %34 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %33, i32 0, i32 2
|
|
|
- store i32 %32, i32* %34, align 4
|
|
|
- %35 = load i32, i32* %4, align 4
|
|
|
- %36 = load i32, i32* %5, align 4
|
|
|
- %37 = icmp eq i32 %35, %36
|
|
|
- %38 = zext i1 %37 to i32
|
|
|
- %39 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %40 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %39, i32 0, i32 3
|
|
|
- store i32 %38, i32* %40, align 8
|
|
|
- %41 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %42 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %41, i32 0, i32 4
|
|
|
- store double 0.000000e+00, double* %42, align 8
|
|
|
- %43 = load i32, i32* %4, align 4
|
|
|
- %44 = sext i32 %43 to i64
|
|
|
- %45 = mul i64 %44, 8
|
|
|
- %46 = call noalias i8* @malloc(i64 %45) #7
|
|
|
- %47 = bitcast i8* %46 to i32**
|
|
|
- %48 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %49 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %48, i32 0, i32 0
|
|
|
- store i32** %47, i32*** %49, align 8
|
|
|
- %50 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %51 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %50, i32 0, i32 0
|
|
|
- %52 = load i32**, i32*** %51, align 8
|
|
|
- %53 = icmp ne i32** %52, null
|
|
|
- br i1 %53, label %57, label %54
|
|
|
-
|
|
|
-54: ; preds = %28
|
|
|
- %55 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %56 = bitcast %struct.Matrix* %55 to i8*
|
|
|
- call void @free(i8* %56) #7
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.19, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %3, align 8
|
|
|
- br label %111
|
|
|
-
|
|
|
-57: ; preds = %28
|
|
|
- store i32 0, i32* %7, align 4
|
|
|
- br label %58
|
|
|
-
|
|
|
-58: ; preds = %106, %57
|
|
|
- %59 = load i32, i32* %7, align 4
|
|
|
- %60 = load i32, i32* %4, align 4
|
|
|
- %61 = icmp slt i32 %59, %60
|
|
|
- br i1 %61, label %62, label %109
|
|
|
-
|
|
|
-62: ; preds = %58
|
|
|
- %63 = load i32, i32* %5, align 4
|
|
|
- %64 = sext i32 %63 to i64
|
|
|
- %65 = call noalias i8* @calloc(i64 %64, i64 4) #7
|
|
|
- %66 = bitcast i8* %65 to i32*
|
|
|
- %67 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %68 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %67, i32 0, i32 0
|
|
|
- %69 = load i32**, i32*** %68, align 8
|
|
|
- %70 = load i32, i32* %7, align 4
|
|
|
- %71 = sext i32 %70 to i64
|
|
|
- %72 = getelementptr inbounds i32*, i32** %69, i64 %71
|
|
|
- store i32* %66, i32** %72, align 8
|
|
|
- %73 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %74 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %73, i32 0, i32 0
|
|
|
- %75 = load i32**, i32*** %74, align 8
|
|
|
- %76 = load i32, i32* %7, align 4
|
|
|
- %77 = sext i32 %76 to i64
|
|
|
- %78 = getelementptr inbounds i32*, i32** %75, i64 %77
|
|
|
- %79 = load i32*, i32** %78, align 8
|
|
|
- %80 = icmp ne i32* %79, null
|
|
|
- br i1 %80, label %105, label %81
|
|
|
-
|
|
|
-81: ; preds = %62
|
|
|
- store i32 0, i32* %8, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-82: ; preds = %95, %81
|
|
|
- %83 = load i32, i32* %8, align 4
|
|
|
- %84 = load i32, i32* %7, align 4
|
|
|
- %85 = icmp slt i32 %83, %84
|
|
|
- br i1 %85, label %86, label %98
|
|
|
-
|
|
|
-86: ; preds = %82
|
|
|
- %87 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %88 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %87, i32 0, i32 0
|
|
|
- %89 = load i32**, i32*** %88, align 8
|
|
|
- %90 = load i32, i32* %8, align 4
|
|
|
- %91 = sext i32 %90 to i64
|
|
|
- %92 = getelementptr inbounds i32*, i32** %89, i64 %91
|
|
|
- %93 = load i32*, i32** %92, align 8
|
|
|
- %94 = bitcast i32* %93 to i8*
|
|
|
- call void @free(i8* %94) #7
|
|
|
- br label %95
|
|
|
-
|
|
|
-95: ; preds = %86
|
|
|
- %96 = load i32, i32* %8, align 4
|
|
|
- %97 = add nsw i32 %96, 1
|
|
|
- store i32 %97, i32* %8, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-98: ; preds = %82
|
|
|
- %99 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %100 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %99, i32 0, i32 0
|
|
|
- %101 = load i32**, i32*** %100, align 8
|
|
|
- %102 = bitcast i32** %101 to i8*
|
|
|
- call void @free(i8* %102) #7
|
|
|
- %103 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %104 = bitcast %struct.Matrix* %103 to i8*
|
|
|
- call void @free(i8* %104) #7
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.20, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %3, align 8
|
|
|
- br label %111
|
|
|
-
|
|
|
-105: ; preds = %62
|
|
|
- br label %106
|
|
|
-
|
|
|
-106: ; preds = %105
|
|
|
- %107 = load i32, i32* %7, align 4
|
|
|
- %108 = add nsw i32 %107, 1
|
|
|
- store i32 %108, i32* %7, align 4
|
|
|
- br label %58
|
|
|
-
|
|
|
-109: ; preds = %58
|
|
|
- %110 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- store %struct.Matrix* %110, %struct.Matrix** %3, align 8
|
|
|
- br label %111
|
|
|
-
|
|
|
-111: ; preds = %109, %98, %54, %27, %21, %14
|
|
|
- %112 = load %struct.Matrix*, %struct.Matrix** %3, align 8
|
|
|
- ret %struct.Matrix* %112
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local noalias i8* @calloc(i64, i64) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind readnone
|
|
|
-declare dso_local i32 @abs(i32) #3
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local %struct.Node* @insertNode(%struct.Node* %0, i32 %1) #0 !project_source !2 {
|
|
|
- %3 = alloca %struct.Node*, align 8
|
|
|
- %4 = alloca %struct.Node*, align 8
|
|
|
- %5 = alloca i32, align 4
|
|
|
- %6 = alloca %struct.Node*, align 8
|
|
|
- %7 = alloca %struct.Node*, align 8
|
|
|
- %8 = alloca %struct.Node*, align 8
|
|
|
- %9 = alloca i32, align 4
|
|
|
- store %struct.Node* %0, %struct.Node** %4, align 8
|
|
|
- store i32 %1, i32* %5, align 4
|
|
|
- %10 = call noalias i8* @malloc(i64 32) #7
|
|
|
- %11 = bitcast i8* %10 to %struct.Node*
|
|
|
- store %struct.Node* %11, %struct.Node** %6, align 8
|
|
|
- %12 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %13 = icmp ne %struct.Node* %12, null
|
|
|
- br i1 %13, label %16, label %14
|
|
|
-
|
|
|
-14: ; preds = %2
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
|
|
|
- %15 = load %struct.Node*, %struct.Node** %4, align 8
|
|
|
- store %struct.Node* %15, %struct.Node** %3, align 8
|
|
|
- br label %92
|
|
|
-
|
|
|
-16: ; preds = %2
|
|
|
- %17 = load i32, i32* %5, align 4
|
|
|
- %18 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %19 = getelementptr inbounds %struct.Node, %struct.Node* %18, i32 0, i32 0
|
|
|
- store i32 %17, i32* %19, align 8
|
|
|
- %20 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %21 = getelementptr inbounds %struct.Node, %struct.Node* %20, i32 0, i32 1
|
|
|
- store %struct.Node* null, %struct.Node** %21, align 8
|
|
|
- %22 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %23 = getelementptr inbounds %struct.Node, %struct.Node* %22, i32 0, i32 2
|
|
|
- store %struct.Node* null, %struct.Node** %23, align 8
|
|
|
- %24 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %25 = getelementptr inbounds %struct.Node, %struct.Node* %24, i32 0, i32 3
|
|
|
- store i32 0, i32* %25, align 8
|
|
|
- %26 = load %struct.Node*, %struct.Node** %4, align 8
|
|
|
- %27 = icmp ne %struct.Node* %26, null
|
|
|
- br i1 %27, label %32, label %28
|
|
|
-
|
|
|
-28: ; preds = %16
|
|
|
- %29 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %30 = getelementptr inbounds %struct.Node, %struct.Node* %29, i32 0, i32 4
|
|
|
- store i32 0, i32* %30, align 4
|
|
|
- store i32 0, i32* @insertNode.maxDepth, align 4
|
|
|
- %31 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- store %struct.Node* %31, %struct.Node** %3, align 8
|
|
|
- br label %92
|
|
|
-
|
|
|
-32: ; preds = %16
|
|
|
- %33 = load %struct.Node*, %struct.Node** %4, align 8
|
|
|
- store %struct.Node* %33, %struct.Node** %7, align 8
|
|
|
- store %struct.Node* null, %struct.Node** %8, align 8
|
|
|
- store i32 0, i32* %9, align 4
|
|
|
- br label %34
|
|
|
-
|
|
|
-34: ; preds = %58, %32
|
|
|
- %35 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- %36 = icmp ne %struct.Node* %35, null
|
|
|
- br i1 %36, label %37, label %43
|
|
|
-
|
|
|
-37: ; preds = %34
|
|
|
- %38 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- %39 = getelementptr inbounds %struct.Node, %struct.Node* %38, i32 0, i32 0
|
|
|
- %40 = load i32, i32* %39, align 8
|
|
|
- %41 = load i32, i32* %5, align 4
|
|
|
- %42 = icmp slt i32 %40, %41
|
|
|
- br label %43
|
|
|
-
|
|
|
-43: ; preds = %37, %34
|
|
|
- %44 = phi i1 [ false, %34 ], [ %42, %37 ]
|
|
|
- br i1 %44, label %45, label %59
|
|
|
-
|
|
|
-45: ; preds = %43
|
|
|
- %46 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- store %struct.Node* %46, %struct.Node** %8, align 8
|
|
|
- %47 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- %48 = getelementptr inbounds %struct.Node, %struct.Node* %47, i32 0, i32 1
|
|
|
- %49 = load %struct.Node*, %struct.Node** %48, align 8
|
|
|
- store %struct.Node* %49, %struct.Node** %7, align 8
|
|
|
- %50 = load i32, i32* %9, align 4
|
|
|
- %51 = add nsw i32 %50, 1
|
|
|
- store i32 %51, i32* %9, align 4
|
|
|
- %52 = load i32, i32* %9, align 4
|
|
|
- %53 = icmp sgt i32 %52, 1000
|
|
|
- br i1 %53, label %54, label %58
|
|
|
-
|
|
|
-54: ; preds = %45
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.26, i64 0, i64 0))
|
|
|
- %55 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %56 = bitcast %struct.Node* %55 to i8*
|
|
|
- call void @free(i8* %56) #7
|
|
|
- %57 = load %struct.Node*, %struct.Node** %4, align 8
|
|
|
- store %struct.Node* %57, %struct.Node** %3, align 8
|
|
|
- br label %92
|
|
|
-
|
|
|
-58: ; preds = %45
|
|
|
- br label %34
|
|
|
-
|
|
|
-59: ; preds = %43
|
|
|
- %60 = load i32, i32* %9, align 4
|
|
|
- %61 = load i32, i32* @insertNode.maxDepth, align 4
|
|
|
- %62 = icmp sgt i32 %60, %61
|
|
|
- br i1 %62, label %63, label %65
|
|
|
-
|
|
|
-63: ; preds = %59
|
|
|
- %64 = load i32, i32* %9, align 4
|
|
|
- store i32 %64, i32* @insertNode.maxDepth, align 4
|
|
|
- br label %65
|
|
|
-
|
|
|
-65: ; preds = %63, %59
|
|
|
- %66 = load i32, i32* %9, align 4
|
|
|
- %67 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %68 = getelementptr inbounds %struct.Node, %struct.Node* %67, i32 0, i32 4
|
|
|
- store i32 %66, i32* %68, align 4
|
|
|
- %69 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- %70 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %71 = getelementptr inbounds %struct.Node, %struct.Node* %70, i32 0, i32 1
|
|
|
- store %struct.Node* %69, %struct.Node** %71, align 8
|
|
|
- %72 = load %struct.Node*, %struct.Node** %8, align 8
|
|
|
- %73 = icmp ne %struct.Node* %72, null
|
|
|
- br i1 %73, label %74, label %81
|
|
|
-
|
|
|
-74: ; preds = %65
|
|
|
- %75 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %76 = load %struct.Node*, %struct.Node** %8, align 8
|
|
|
- %77 = getelementptr inbounds %struct.Node, %struct.Node* %76, i32 0, i32 1
|
|
|
- store %struct.Node* %75, %struct.Node** %77, align 8
|
|
|
- %78 = load %struct.Node*, %struct.Node** %8, align 8
|
|
|
- %79 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %80 = getelementptr inbounds %struct.Node, %struct.Node* %79, i32 0, i32 2
|
|
|
- store %struct.Node* %78, %struct.Node** %80, align 8
|
|
|
- br label %83
|
|
|
-
|
|
|
-81: ; preds = %65
|
|
|
- %82 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- store %struct.Node* %82, %struct.Node** %3, align 8
|
|
|
- br label %92
|
|
|
-
|
|
|
-83: ; preds = %74
|
|
|
- %84 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- %85 = icmp ne %struct.Node* %84, null
|
|
|
- br i1 %85, label %86, label %90
|
|
|
-
|
|
|
-86: ; preds = %83
|
|
|
- %87 = load %struct.Node*, %struct.Node** %6, align 8
|
|
|
- %88 = load %struct.Node*, %struct.Node** %7, align 8
|
|
|
- %89 = getelementptr inbounds %struct.Node, %struct.Node* %88, i32 0, i32 2
|
|
|
- store %struct.Node* %87, %struct.Node** %89, align 8
|
|
|
- br label %90
|
|
|
-
|
|
|
-90: ; preds = %86, %83
|
|
|
- %91 = load %struct.Node*, %struct.Node** %4, align 8
|
|
|
- store %struct.Node* %91, %struct.Node** %3, align 8
|
|
|
- br label %92
|
|
|
-
|
|
|
-92: ; preds = %90, %81, %54, %28, %14
|
|
|
- %93 = load %struct.Node*, %struct.Node** %3, align 8
|
|
|
- ret %struct.Node* %93
|
|
|
-}
|
|
|
-
|
|
|
-declare dso_local i32 @printf(i8*, ...) #2
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local i32 @projectA_main() #0 !project_source !2 {
|
|
|
- %1 = alloca i32, align 4
|
|
|
- %2 = alloca %struct.DynamicArray*, align 8
|
|
|
- %3 = alloca i32, align 4
|
|
|
- %4 = alloca %struct.Matrix*, align 8
|
|
|
- %5 = alloca %struct.Matrix*, align 8
|
|
|
- %6 = alloca i32, align 4
|
|
|
- %7 = alloca i32, align 4
|
|
|
- %8 = alloca %struct.Matrix*, align 8
|
|
|
- %9 = alloca i32, align 4
|
|
|
- %10 = alloca %struct.Node*, align 8
|
|
|
- %11 = alloca i32, align 4
|
|
|
- %12 = alloca i32, align 4
|
|
|
- %13 = alloca %struct.Node*, align 8
|
|
|
- %14 = alloca %struct.Node*, align 8
|
|
|
- %15 = alloca i32, align 4
|
|
|
- %16 = alloca %struct.Node*, align 8
|
|
|
- %17 = alloca i32, align 4
|
|
|
- %18 = alloca i32, align 4
|
|
|
- %19 = alloca %struct.Node*, align 8
|
|
|
- %20 = call i64 @time(i64* null) #7
|
|
|
- %21 = trunc i64 %20 to i32
|
|
|
- call void @srand(i32 %21) #7
|
|
|
- %22 = call %struct.DynamicArray* @createDynamicArray(i32 10)
|
|
|
- store %struct.DynamicArray* %22, %struct.DynamicArray** %2, align 8
|
|
|
- %23 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %24 = icmp ne %struct.DynamicArray* %23, null
|
|
|
- br i1 %24, label %28, label %25
|
|
|
-
|
|
|
-25: ; preds = %0
|
|
|
- %26 = call i8* @fused_getErrorMessage(i1 false, i8* null)
|
|
|
- %27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %26)
|
|
|
- store i32 -1, i32* %1, align 4
|
|
|
- br label %324
|
|
|
-
|
|
|
-28: ; preds = %0
|
|
|
- store i32 0, i32* %3, align 4
|
|
|
- br label %29
|
|
|
-
|
|
|
-29: ; preds = %43, %28
|
|
|
- %30 = load i32, i32* %3, align 4
|
|
|
- %31 = icmp slt i32 %30, 15
|
|
|
- br i1 %31, label %32, label %46
|
|
|
-
|
|
|
-32: ; preds = %29
|
|
|
- %33 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %34 = call i32 @rand() #7
|
|
|
- %35 = srem i32 %34, 100
|
|
|
- %36 = call i32 @fused_pushBack(i1 false, %struct.DynamicArray* %33, i32 %35)
|
|
|
- %37 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- %38 = icmp ne i8* %37, null
|
|
|
- br i1 %38, label %39, label %42
|
|
|
-
|
|
|
-39: ; preds = %32
|
|
|
- %40 = call i8* @fused_getErrorMessage(i1 false, i8* null)
|
|
|
- %41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), i8* %40)
|
|
|
- br label %46
|
|
|
-
|
|
|
-42: ; preds = %32
|
|
|
- br label %43
|
|
|
-
|
|
|
-43: ; preds = %42
|
|
|
- %44 = load i32, i32* %3, align 4
|
|
|
- %45 = add nsw i32 %44, 1
|
|
|
- store i32 %45, i32* %3, align 4
|
|
|
- br label %29
|
|
|
-
|
|
|
-46: ; preds = %39, %29
|
|
|
- %47 = call %struct.Matrix* @createMatrix(i32 3, i32 3)
|
|
|
- store %struct.Matrix* %47, %struct.Matrix** %4, align 8
|
|
|
- %48 = call %struct.Matrix* @createMatrix(i32 3, i32 3)
|
|
|
- store %struct.Matrix* %48, %struct.Matrix** %5, align 8
|
|
|
- %49 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %50 = icmp ne %struct.Matrix* %49, null
|
|
|
- br i1 %50, label %51, label %54
|
|
|
-
|
|
|
-51: ; preds = %46
|
|
|
- %52 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %53 = icmp ne %struct.Matrix* %52, null
|
|
|
- br i1 %53, label %75, label %54
|
|
|
-
|
|
|
-54: ; preds = %51, %46
|
|
|
- %55 = call i8* @fused_getErrorMessage(i1 false, i8* null)
|
|
|
- %56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %55)
|
|
|
- %57 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %58 = icmp ne %struct.Matrix* %57, null
|
|
|
- br i1 %58, label %59, label %62
|
|
|
-
|
|
|
-59: ; preds = %54
|
|
|
- %60 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %61 = bitcast %struct.Matrix* %60 to i8*
|
|
|
- call void @free(i8* %61) #7
|
|
|
- br label %62
|
|
|
-
|
|
|
-62: ; preds = %59, %54
|
|
|
- %63 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %64 = icmp ne %struct.Matrix* %63, null
|
|
|
- br i1 %64, label %65, label %68
|
|
|
-
|
|
|
-65: ; preds = %62
|
|
|
- %66 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %67 = bitcast %struct.Matrix* %66 to i8*
|
|
|
- call void @free(i8* %67) #7
|
|
|
- br label %68
|
|
|
-
|
|
|
-68: ; preds = %65, %62
|
|
|
- %69 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %70 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %69, i32 0, i32 0
|
|
|
- %71 = load i32*, i32** %70, align 8
|
|
|
- %72 = bitcast i32* %71 to i8*
|
|
|
- call void @free(i8* %72) #7
|
|
|
- %73 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %74 = bitcast %struct.DynamicArray* %73 to i8*
|
|
|
- call void @free(i8* %74) #7
|
|
|
- store i32 -1, i32* %1, align 4
|
|
|
- br label %324
|
|
|
-
|
|
|
-75: ; preds = %51
|
|
|
- store i32 0, i32* %6, align 4
|
|
|
- br label %76
|
|
|
-
|
|
|
-76: ; preds = %112, %75
|
|
|
- %77 = load i32, i32* %6, align 4
|
|
|
- %78 = icmp slt i32 %77, 3
|
|
|
- br i1 %78, label %79, label %115
|
|
|
-
|
|
|
-79: ; preds = %76
|
|
|
- store i32 0, i32* %7, align 4
|
|
|
- br label %80
|
|
|
-
|
|
|
-80: ; preds = %108, %79
|
|
|
- %81 = load i32, i32* %7, align 4
|
|
|
- %82 = icmp slt i32 %81, 3
|
|
|
- br i1 %82, label %83, label %111
|
|
|
-
|
|
|
-83: ; preds = %80
|
|
|
- %84 = call i32 @rand() #7
|
|
|
- %85 = srem i32 %84, 10
|
|
|
- %86 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %87 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %86, i32 0, i32 0
|
|
|
- %88 = load i32**, i32*** %87, align 8
|
|
|
- %89 = load i32, i32* %6, align 4
|
|
|
- %90 = sext i32 %89 to i64
|
|
|
- %91 = getelementptr inbounds i32*, i32** %88, i64 %90
|
|
|
- %92 = load i32*, i32** %91, align 8
|
|
|
- %93 = load i32, i32* %7, align 4
|
|
|
- %94 = sext i32 %93 to i64
|
|
|
- %95 = getelementptr inbounds i32, i32* %92, i64 %94
|
|
|
- store i32 %85, i32* %95, align 4
|
|
|
- %96 = call i32 @rand() #7
|
|
|
- %97 = srem i32 %96, 10
|
|
|
- %98 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %99 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %98, i32 0, i32 0
|
|
|
- %100 = load i32**, i32*** %99, align 8
|
|
|
- %101 = load i32, i32* %6, align 4
|
|
|
- %102 = sext i32 %101 to i64
|
|
|
- %103 = getelementptr inbounds i32*, i32** %100, i64 %102
|
|
|
- %104 = load i32*, i32** %103, align 8
|
|
|
- %105 = load i32, i32* %7, align 4
|
|
|
- %106 = sext i32 %105 to i64
|
|
|
- %107 = getelementptr inbounds i32, i32* %104, i64 %106
|
|
|
- store i32 %97, i32* %107, align 4
|
|
|
- br label %108
|
|
|
-
|
|
|
-108: ; preds = %83
|
|
|
- %109 = load i32, i32* %7, align 4
|
|
|
- %110 = add nsw i32 %109, 1
|
|
|
- store i32 %110, i32* %7, align 4
|
|
|
- br label %80
|
|
|
-
|
|
|
-111: ; preds = %80
|
|
|
- br label %112
|
|
|
-
|
|
|
-112: ; preds = %111
|
|
|
- %113 = load i32, i32* %6, align 4
|
|
|
- %114 = add nsw i32 %113, 1
|
|
|
- store i32 %114, i32* %6, align 4
|
|
|
- br label %76
|
|
|
-
|
|
|
-115: ; preds = %76
|
|
|
- %116 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %117 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %118 = call %fused_return_multiplyMatrices_testPoints @fused_multiplyMatrices(i1 false, %struct.Matrix* %116, %struct.Matrix* %117, i32 0)
|
|
|
- %extracted_bunker_return = extractvalue %fused_return_multiplyMatrices_testPoints %118, 1
|
|
|
- store %struct.Matrix* %extracted_bunker_return, %struct.Matrix** %8, align 8
|
|
|
- %119 = load %struct.Matrix*, %struct.Matrix** %8, align 8
|
|
|
- %120 = icmp ne %struct.Matrix* %119, null
|
|
|
- br i1 %120, label %169, label %121
|
|
|
-
|
|
|
-121: ; preds = %115
|
|
|
- %122 = call i8* @fused_getErrorMessage(i1 false, i8* null)
|
|
|
- %123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i8* %122)
|
|
|
- store i32 0, i32* %9, align 4
|
|
|
- br label %124
|
|
|
-
|
|
|
-124: ; preds = %147, %121
|
|
|
- %125 = load i32, i32* %9, align 4
|
|
|
- %126 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %127 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %126, i32 0, i32 1
|
|
|
- %128 = load i32, i32* %127, align 8
|
|
|
- %129 = icmp slt i32 %125, %128
|
|
|
- br i1 %129, label %130, label %150
|
|
|
-
|
|
|
-130: ; preds = %124
|
|
|
- %131 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %132 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %131, i32 0, i32 0
|
|
|
- %133 = load i32**, i32*** %132, align 8
|
|
|
- %134 = load i32, i32* %9, align 4
|
|
|
- %135 = sext i32 %134 to i64
|
|
|
- %136 = getelementptr inbounds i32*, i32** %133, i64 %135
|
|
|
- %137 = load i32*, i32** %136, align 8
|
|
|
- %138 = bitcast i32* %137 to i8*
|
|
|
- call void @free(i8* %138) #7
|
|
|
- %139 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %140 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %139, i32 0, i32 0
|
|
|
- %141 = load i32**, i32*** %140, align 8
|
|
|
- %142 = load i32, i32* %9, align 4
|
|
|
- %143 = sext i32 %142 to i64
|
|
|
- %144 = getelementptr inbounds i32*, i32** %141, i64 %143
|
|
|
- %145 = load i32*, i32** %144, align 8
|
|
|
- %146 = bitcast i32* %145 to i8*
|
|
|
- call void @free(i8* %146) #7
|
|
|
- br label %147
|
|
|
-
|
|
|
-147: ; preds = %130
|
|
|
- %148 = load i32, i32* %9, align 4
|
|
|
- %149 = add nsw i32 %148, 1
|
|
|
- store i32 %149, i32* %9, align 4
|
|
|
- br label %124
|
|
|
-
|
|
|
-150: ; preds = %124
|
|
|
- %151 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %152 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %151, i32 0, i32 0
|
|
|
- %153 = load i32**, i32*** %152, align 8
|
|
|
- %154 = bitcast i32** %153 to i8*
|
|
|
- call void @free(i8* %154) #7
|
|
|
- %155 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %156 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %155, i32 0, i32 0
|
|
|
- %157 = load i32**, i32*** %156, align 8
|
|
|
- %158 = bitcast i32** %157 to i8*
|
|
|
- call void @free(i8* %158) #7
|
|
|
- %159 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %160 = bitcast %struct.Matrix* %159 to i8*
|
|
|
- call void @free(i8* %160) #7
|
|
|
- %161 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %162 = bitcast %struct.Matrix* %161 to i8*
|
|
|
- call void @free(i8* %162) #7
|
|
|
- %163 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %164 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %163, i32 0, i32 0
|
|
|
- %165 = load i32*, i32** %164, align 8
|
|
|
- %166 = bitcast i32* %165 to i8*
|
|
|
- call void @free(i8* %166) #7
|
|
|
- %167 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %168 = bitcast %struct.DynamicArray* %167 to i8*
|
|
|
- call void @free(i8* %168) #7
|
|
|
- store i32 -1, i32* %1, align 4
|
|
|
- br label %324
|
|
|
-
|
|
|
-169: ; preds = %115
|
|
|
- store %struct.Node* null, %struct.Node** %10, align 8
|
|
|
- store i32 0, i32* %11, align 4
|
|
|
- br label %170
|
|
|
-
|
|
|
-170: ; preds = %184, %169
|
|
|
- %171 = load i32, i32* %11, align 4
|
|
|
- %172 = icmp slt i32 %171, 5
|
|
|
- br i1 %172, label %173, label %187
|
|
|
-
|
|
|
-173: ; preds = %170
|
|
|
- %174 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- %175 = call i32 @rand() #7
|
|
|
- %176 = srem i32 %175, 50
|
|
|
- %177 = call %struct.Node* @insertNode(%struct.Node* %174, i32 %176)
|
|
|
- store %struct.Node* %177, %struct.Node** %10, align 8
|
|
|
- %178 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- %179 = icmp ne i8* %178, null
|
|
|
- br i1 %179, label %180, label %183
|
|
|
-
|
|
|
-180: ; preds = %173
|
|
|
- %181 = call i8* @fused_getErrorMessage(i1 false, i8* null)
|
|
|
- %182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0), i8* %181)
|
|
|
- br label %187
|
|
|
-
|
|
|
-183: ; preds = %173
|
|
|
- br label %184
|
|
|
-
|
|
|
-184: ; preds = %183
|
|
|
- %185 = load i32, i32* %11, align 4
|
|
|
- %186 = add nsw i32 %185, 1
|
|
|
- store i32 %186, i32* %11, align 4
|
|
|
- br label %170
|
|
|
-
|
|
|
-187: ; preds = %180, %170
|
|
|
- %188 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %189 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %188, i32 0, i32 0
|
|
|
- %190 = load i32*, i32** %189, align 8
|
|
|
- %191 = bitcast i32* %190 to i8*
|
|
|
- call void @free(i8* %191) #7
|
|
|
- %192 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %193 = bitcast %struct.DynamicArray* %192 to i8*
|
|
|
- call void @free(i8* %193) #7
|
|
|
- store i32 0, i32* %12, align 4
|
|
|
- br label %194
|
|
|
-
|
|
|
-194: ; preds = %225, %187
|
|
|
- %195 = load i32, i32* %12, align 4
|
|
|
- %196 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %197 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %196, i32 0, i32 1
|
|
|
- %198 = load i32, i32* %197, align 8
|
|
|
- %199 = icmp slt i32 %195, %198
|
|
|
- br i1 %199, label %200, label %228
|
|
|
-
|
|
|
-200: ; preds = %194
|
|
|
- %201 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %202 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %201, i32 0, i32 0
|
|
|
- %203 = load i32**, i32*** %202, align 8
|
|
|
- %204 = load i32, i32* %12, align 4
|
|
|
- %205 = sext i32 %204 to i64
|
|
|
- %206 = getelementptr inbounds i32*, i32** %203, i64 %205
|
|
|
- %207 = load i32*, i32** %206, align 8
|
|
|
- %208 = bitcast i32* %207 to i8*
|
|
|
- call void @free(i8* %208) #7
|
|
|
- %209 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %210 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %209, i32 0, i32 0
|
|
|
- %211 = load i32**, i32*** %210, align 8
|
|
|
- %212 = load i32, i32* %12, align 4
|
|
|
- %213 = sext i32 %212 to i64
|
|
|
- %214 = getelementptr inbounds i32*, i32** %211, i64 %213
|
|
|
- %215 = load i32*, i32** %214, align 8
|
|
|
- %216 = bitcast i32* %215 to i8*
|
|
|
- call void @free(i8* %216) #7
|
|
|
- %217 = load %struct.Matrix*, %struct.Matrix** %8, align 8
|
|
|
- %218 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %217, i32 0, i32 0
|
|
|
- %219 = load i32**, i32*** %218, align 8
|
|
|
- %220 = load i32, i32* %12, align 4
|
|
|
- %221 = sext i32 %220 to i64
|
|
|
- %222 = getelementptr inbounds i32*, i32** %219, i64 %221
|
|
|
- %223 = load i32*, i32** %222, align 8
|
|
|
- %224 = bitcast i32* %223 to i8*
|
|
|
- call void @free(i8* %224) #7
|
|
|
- br label %225
|
|
|
-
|
|
|
-225: ; preds = %200
|
|
|
- %226 = load i32, i32* %12, align 4
|
|
|
- %227 = add nsw i32 %226, 1
|
|
|
- store i32 %227, i32* %12, align 4
|
|
|
- br label %194
|
|
|
-
|
|
|
-228: ; preds = %194
|
|
|
- %229 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %230 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %229, i32 0, i32 0
|
|
|
- %231 = load i32**, i32*** %230, align 8
|
|
|
- %232 = bitcast i32** %231 to i8*
|
|
|
- call void @free(i8* %232) #7
|
|
|
- %233 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %234 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %233, i32 0, i32 0
|
|
|
- %235 = load i32**, i32*** %234, align 8
|
|
|
- %236 = bitcast i32** %235 to i8*
|
|
|
- call void @free(i8* %236) #7
|
|
|
- %237 = load %struct.Matrix*, %struct.Matrix** %8, align 8
|
|
|
- %238 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %237, i32 0, i32 0
|
|
|
- %239 = load i32**, i32*** %238, align 8
|
|
|
- %240 = bitcast i32** %239 to i8*
|
|
|
- call void @free(i8* %240) #7
|
|
|
- %241 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %242 = bitcast %struct.Matrix* %241 to i8*
|
|
|
- call void @free(i8* %242) #7
|
|
|
- %243 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %244 = bitcast %struct.Matrix* %243 to i8*
|
|
|
- call void @free(i8* %244) #7
|
|
|
- %245 = load %struct.Matrix*, %struct.Matrix** %8, align 8
|
|
|
- %246 = bitcast %struct.Matrix* %245 to i8*
|
|
|
- call void @free(i8* %246) #7
|
|
|
- %247 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- %248 = icmp ne %struct.Node* %247, null
|
|
|
- br i1 %248, label %249, label %317
|
|
|
-
|
|
|
-249: ; preds = %228
|
|
|
- %250 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- store %struct.Node* %250, %struct.Node** %13, align 8
|
|
|
- %251 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- store %struct.Node* %251, %struct.Node** %14, align 8
|
|
|
- store i32 0, i32* %15, align 4
|
|
|
- br label %252
|
|
|
-
|
|
|
-252: ; preds = %275, %249
|
|
|
- %253 = load %struct.Node*, %struct.Node** %14, align 8
|
|
|
- %254 = icmp ne %struct.Node* %253, null
|
|
|
- br i1 %254, label %255, label %260
|
|
|
-
|
|
|
-255: ; preds = %252
|
|
|
- %256 = load %struct.Node*, %struct.Node** %14, align 8
|
|
|
- %257 = getelementptr inbounds %struct.Node, %struct.Node* %256, i32 0, i32 1
|
|
|
- %258 = load %struct.Node*, %struct.Node** %257, align 8
|
|
|
- %259 = icmp ne %struct.Node* %258, null
|
|
|
- br label %260
|
|
|
-
|
|
|
-260: ; preds = %255, %252
|
|
|
- %261 = phi i1 [ false, %252 ], [ %259, %255 ]
|
|
|
- br i1 %261, label %262, label %276
|
|
|
-
|
|
|
-262: ; preds = %260
|
|
|
- %263 = load %struct.Node*, %struct.Node** %13, align 8
|
|
|
- %264 = getelementptr inbounds %struct.Node, %struct.Node* %263, i32 0, i32 1
|
|
|
- %265 = load %struct.Node*, %struct.Node** %264, align 8
|
|
|
- store %struct.Node* %265, %struct.Node** %13, align 8
|
|
|
- %266 = load %struct.Node*, %struct.Node** %14, align 8
|
|
|
- %267 = getelementptr inbounds %struct.Node, %struct.Node* %266, i32 0, i32 1
|
|
|
- %268 = load %struct.Node*, %struct.Node** %267, align 8
|
|
|
- %269 = getelementptr inbounds %struct.Node, %struct.Node* %268, i32 0, i32 1
|
|
|
- %270 = load %struct.Node*, %struct.Node** %269, align 8
|
|
|
- store %struct.Node* %270, %struct.Node** %14, align 8
|
|
|
- %271 = load %struct.Node*, %struct.Node** %13, align 8
|
|
|
- %272 = load %struct.Node*, %struct.Node** %14, align 8
|
|
|
- %273 = icmp eq %struct.Node* %271, %272
|
|
|
- br i1 %273, label %274, label %275
|
|
|
-
|
|
|
-274: ; preds = %262
|
|
|
- store i32 1, i32* %15, align 4
|
|
|
- br label %276
|
|
|
-
|
|
|
-275: ; preds = %262
|
|
|
- br label %252
|
|
|
-
|
|
|
-276: ; preds = %274, %260
|
|
|
- %277 = load i32, i32* %15, align 4
|
|
|
- %278 = icmp ne i32 %277, 0
|
|
|
- br i1 %278, label %279, label %305
|
|
|
-
|
|
|
-279: ; preds = %276
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0))
|
|
|
- %280 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- store %struct.Node* %280, %struct.Node** %16, align 8
|
|
|
- store i32 1000, i32* %17, align 4
|
|
|
- store i32 0, i32* %18, align 4
|
|
|
- br label %281
|
|
|
-
|
|
|
-281: ; preds = %296, %279
|
|
|
- %282 = load %struct.Node*, %struct.Node** %16, align 8
|
|
|
- %283 = icmp ne %struct.Node* %282, null
|
|
|
- br i1 %283, label %284, label %288
|
|
|
-
|
|
|
-284: ; preds = %281
|
|
|
- %285 = load i32, i32* %18, align 4
|
|
|
- %286 = load i32, i32* %17, align 4
|
|
|
- %287 = icmp slt i32 %285, %286
|
|
|
- br label %288
|
|
|
-
|
|
|
-288: ; preds = %284, %281
|
|
|
- %289 = phi i1 [ false, %281 ], [ %287, %284 ]
|
|
|
- br i1 %289, label %290, label %304
|
|
|
-
|
|
|
-290: ; preds = %288
|
|
|
- %291 = load %struct.Node*, %struct.Node** %16, align 8
|
|
|
- %292 = getelementptr inbounds %struct.Node, %struct.Node* %291, i32 0, i32 3
|
|
|
- %293 = load i32, i32* %292, align 8
|
|
|
- %294 = icmp ne i32 %293, 0
|
|
|
- br i1 %294, label %295, label %296
|
|
|
-
|
|
|
-295: ; preds = %290
|
|
|
- br label %304
|
|
|
-
|
|
|
-296: ; preds = %290
|
|
|
- %297 = load %struct.Node*, %struct.Node** %16, align 8
|
|
|
- %298 = getelementptr inbounds %struct.Node, %struct.Node* %297, i32 0, i32 3
|
|
|
- store i32 1, i32* %298, align 8
|
|
|
- %299 = load %struct.Node*, %struct.Node** %16, align 8
|
|
|
- %300 = getelementptr inbounds %struct.Node, %struct.Node* %299, i32 0, i32 1
|
|
|
- %301 = load %struct.Node*, %struct.Node** %300, align 8
|
|
|
- store %struct.Node* %301, %struct.Node** %16, align 8
|
|
|
- %302 = load i32, i32* %18, align 4
|
|
|
- %303 = add nsw i32 %302, 1
|
|
|
- store i32 %303, i32* %18, align 4
|
|
|
- br label %281
|
|
|
-
|
|
|
-304: ; preds = %295, %288
|
|
|
- br label %305
|
|
|
-
|
|
|
-305: ; preds = %304, %276
|
|
|
- br label %306
|
|
|
-
|
|
|
-306: ; preds = %309, %305
|
|
|
- %307 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- %308 = icmp ne %struct.Node* %307, null
|
|
|
- br i1 %308, label %309, label %316
|
|
|
-
|
|
|
-309: ; preds = %306
|
|
|
- %310 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- store %struct.Node* %310, %struct.Node** %19, align 8
|
|
|
- %311 = load %struct.Node*, %struct.Node** %10, align 8
|
|
|
- %312 = getelementptr inbounds %struct.Node, %struct.Node* %311, i32 0, i32 1
|
|
|
- %313 = load %struct.Node*, %struct.Node** %312, align 8
|
|
|
- store %struct.Node* %313, %struct.Node** %10, align 8
|
|
|
- %314 = load %struct.Node*, %struct.Node** %19, align 8
|
|
|
- %315 = bitcast %struct.Node* %314 to i8*
|
|
|
- call void @free(i8* %315) #7
|
|
|
- br label %306
|
|
|
-
|
|
|
-316: ; preds = %306
|
|
|
- br label %317
|
|
|
-
|
|
|
-317: ; preds = %316, %228
|
|
|
- %318 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- %319 = icmp ne i8* %318, null
|
|
|
- br i1 %319, label %320, label %322
|
|
|
-
|
|
|
-320: ; preds = %317
|
|
|
- %321 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- call void @free(i8* %321) #7
|
|
|
- br label %322
|
|
|
-
|
|
|
-322: ; preds = %320, %317
|
|
|
- %323 = call i32 @fused_performSimpleCalculations(i1 false, i32 0)
|
|
|
- store i32 0, i32* %1, align 4
|
|
|
- br label %324
|
|
|
-
|
|
|
-324: ; preds = %322, %150, %68, %25
|
|
|
- %325 = load i32, i32* %1, align 4
|
|
|
- ret i32 %325
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local i64 @time(i64*) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local void @srand(i32) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local i32 @rand() #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local double @sqrt(double) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind readnone speculatable willreturn
|
|
|
-declare double @llvm.fabs.f64(double) #4
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local double @calculateCircleArea(%struct.Circle* byval(%struct.Circle) align 8 %0, i32* %1) #0 !project_source !2 {
|
|
|
- %3 = alloca double, align 8
|
|
|
- %4 = alloca i32*, align 8
|
|
|
- %5 = alloca double, align 8
|
|
|
- store i32* %1, i32** %4, align 8
|
|
|
- %6 = load i32*, i32** %4, align 8
|
|
|
- store i32 0, i32* %6, align 4
|
|
|
- %7 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 2
|
|
|
- %8 = load i32, i32* %7, align 8
|
|
|
- %9 = icmp ne i32 %8, 0
|
|
|
- br i1 %9, label %12, label %10
|
|
|
-
|
|
|
-10: ; preds = %2
|
|
|
- %11 = load i32*, i32** %4, align 8
|
|
|
- store i32 1, i32* %11, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.36, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-12: ; preds = %2
|
|
|
- %13 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
|
|
|
- %14 = load double, double* %13, align 8
|
|
|
- %15 = fcmp ole double %14, 0.000000e+00
|
|
|
- br i1 %15, label %16, label %18
|
|
|
-
|
|
|
-16: ; preds = %12
|
|
|
- %17 = load i32*, i32** %4, align 8
|
|
|
- store i32 1, i32* %17, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.37, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-18: ; preds = %12
|
|
|
- %19 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
|
|
|
- %20 = load double, double* %19, align 8
|
|
|
- %21 = fcmp ogt double %20, 1.000000e+03
|
|
|
- br i1 %21, label %22, label %24
|
|
|
-
|
|
|
-22: ; preds = %18
|
|
|
- %23 = load i32*, i32** %4, align 8
|
|
|
- store i32 3, i32* %23, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.38, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-24: ; preds = %18
|
|
|
- %25 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
|
|
|
- %26 = getelementptr inbounds %struct.Point, %struct.Point* %25, i32 0, i32 0
|
|
|
- %27 = load i32, i32* %26, align 8
|
|
|
- %28 = call i32 @abs(i32 %27) #8
|
|
|
- %29 = icmp sgt i32 %28, 1000
|
|
|
- br i1 %29, label %36, label %30
|
|
|
-
|
|
|
-30: ; preds = %24
|
|
|
- %31 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
|
|
|
- %32 = getelementptr inbounds %struct.Point, %struct.Point* %31, i32 0, i32 1
|
|
|
- %33 = load i32, i32* %32, align 4
|
|
|
- %34 = call i32 @abs(i32 %33) #8
|
|
|
- %35 = icmp sgt i32 %34, 1000
|
|
|
- br i1 %35, label %36, label %38
|
|
|
-
|
|
|
-36: ; preds = %30, %24
|
|
|
- %37 = load i32*, i32** %4, align 8
|
|
|
- store i32 3, i32* %37, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.39, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-38: ; preds = %30
|
|
|
- %39 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
|
|
|
- %40 = load double, double* %39, align 8
|
|
|
- %41 = fmul double 3.141590e+00, %40
|
|
|
- %42 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 1
|
|
|
- %43 = load double, double* %42, align 8
|
|
|
- %44 = fmul double %41, %43
|
|
|
- store double %44, double* %5, align 8
|
|
|
- %45 = load double, double* %5, align 8
|
|
|
- %46 = fcmp uno double %45, %45
|
|
|
- br i1 %46, label %56, label %47
|
|
|
-
|
|
|
-47: ; preds = %38
|
|
|
- %48 = load double, double* %5, align 8
|
|
|
- %49 = call double @llvm.fabs.f64(double %48) #9
|
|
|
- %50 = fcmp oeq double %49, 0x7FF0000000000000
|
|
|
- %51 = bitcast double %48 to i64
|
|
|
- %52 = icmp slt i64 %51, 0
|
|
|
- %53 = select i1 %52, i32 -1, i32 1
|
|
|
- %54 = select i1 %50, i32 %53, i32 0
|
|
|
- %55 = icmp ne i32 %54, 0
|
|
|
- br i1 %55, label %56, label %58
|
|
|
-
|
|
|
-56: ; preds = %47, %38
|
|
|
- %57 = load i32*, i32** %4, align 8
|
|
|
- store i32 5, i32* %57, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-58: ; preds = %47
|
|
|
- %59 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3
|
|
|
- %60 = getelementptr inbounds [256 x i8], [256 x i8]* %59, i64 0, i64 0
|
|
|
- %61 = call i32 @strcmp(i8* %60, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.41, i64 0, i64 0)) #10
|
|
|
- %62 = icmp eq i32 %61, 0
|
|
|
- br i1 %62, label %63, label %65
|
|
|
-
|
|
|
-63: ; preds = %58
|
|
|
- %64 = load double, double* %5, align 8
|
|
|
- store double %64, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-65: ; preds = %58
|
|
|
- %66 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 3
|
|
|
- %67 = getelementptr inbounds [256 x i8], [256 x i8]* %66, i64 0, i64 0
|
|
|
- %68 = call i32 @strcmp(i8* %67, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.42, i64 0, i64 0)) #10
|
|
|
- %69 = icmp eq i32 %68, 0
|
|
|
- br i1 %69, label %70, label %83
|
|
|
-
|
|
|
-70: ; preds = %65
|
|
|
- %71 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
|
|
|
- %72 = getelementptr inbounds %struct.Point, %struct.Point* %71, i32 0, i32 3
|
|
|
- %73 = load double, double* %72, align 8
|
|
|
- %74 = fcmp ole double %73, 0.000000e+00
|
|
|
- br i1 %74, label %75, label %77
|
|
|
-
|
|
|
-75: ; preds = %70
|
|
|
- %76 = load i32*, i32** %4, align 8
|
|
|
- store i32 1, i32* %76, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-77: ; preds = %70
|
|
|
- %78 = load double, double* %5, align 8
|
|
|
- %79 = getelementptr inbounds %struct.Circle, %struct.Circle* %0, i32 0, i32 0
|
|
|
- %80 = getelementptr inbounds %struct.Point, %struct.Point* %79, i32 0, i32 3
|
|
|
- %81 = load double, double* %80, align 8
|
|
|
- %82 = fmul double %78, %81
|
|
|
- store double %82, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-83: ; preds = %65
|
|
|
- %84 = load i32*, i32** %4, align 8
|
|
|
- store i32 1, i32* %84, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.44, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %3, align 8
|
|
|
- br label %85
|
|
|
-
|
|
|
-85: ; preds = %83, %77, %75, %63, %56, %36, %22, %16, %10
|
|
|
- %86 = load double, double* %3, align 8
|
|
|
- ret double %86
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: nounwind readonly
|
|
|
-declare dso_local i32 @strcmp(i8*, i8*) #5
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local void @removeDuplicates(%struct.DynamicArray* %0) #0 !project_source !2 {
|
|
|
- %2 = alloca %struct.DynamicArray*, align 8
|
|
|
- %3 = alloca i32, align 4
|
|
|
- %4 = alloca i32, align 4
|
|
|
- %5 = alloca i32, align 4
|
|
|
- store %struct.DynamicArray* %0, %struct.DynamicArray** %2, align 8
|
|
|
- %6 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %7 = icmp ne %struct.DynamicArray* %6, null
|
|
|
- br i1 %7, label %8, label %13
|
|
|
-
|
|
|
-8: ; preds = %1
|
|
|
- %9 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %10 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %9, i32 0, i32 0
|
|
|
- %11 = load i32*, i32** %10, align 8
|
|
|
- %12 = icmp ne i32* %11, null
|
|
|
- br i1 %12, label %14, label %13
|
|
|
-
|
|
|
-13: ; preds = %8, %1
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.49, i64 0, i64 0))
|
|
|
- br label %81
|
|
|
-
|
|
|
-14: ; preds = %8
|
|
|
- %15 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %16 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %15, i32 0, i32 1
|
|
|
- %17 = load i32, i32* %16, align 8
|
|
|
- %18 = icmp sle i32 %17, 1
|
|
|
- br i1 %18, label %19, label %20
|
|
|
-
|
|
|
-19: ; preds = %14
|
|
|
- br label %81
|
|
|
-
|
|
|
-20: ; preds = %14
|
|
|
- store i32 0, i32* %3, align 4
|
|
|
- %21 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %22 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %21, i32 0, i32 0
|
|
|
- %23 = load i32*, i32** %22, align 8
|
|
|
- %24 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %25 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %24, i32 0, i32 1
|
|
|
- %26 = load i32, i32* %25, align 8
|
|
|
- %27 = sub nsw i32 %26, 1
|
|
|
- call void @quickSort(i32* %23, i32 0, i32 %27, i32* %3)
|
|
|
- %28 = load i32, i32* %3, align 4
|
|
|
- %29 = icmp ne i32 %28, 0
|
|
|
- br i1 %29, label %30, label %31
|
|
|
-
|
|
|
-30: ; preds = %20
|
|
|
- br label %81
|
|
|
-
|
|
|
-31: ; preds = %20
|
|
|
- store i32 1, i32* %4, align 4
|
|
|
- store i32 1, i32* %5, align 4
|
|
|
- br label %32
|
|
|
-
|
|
|
-32: ; preds = %72, %31
|
|
|
- %33 = load i32, i32* %5, align 4
|
|
|
- %34 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %35 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %34, i32 0, i32 1
|
|
|
- %36 = load i32, i32* %35, align 8
|
|
|
- %37 = icmp slt i32 %33, %36
|
|
|
- br i1 %37, label %38, label %75
|
|
|
-
|
|
|
-38: ; preds = %32
|
|
|
- %39 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %40 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %39, i32 0, i32 0
|
|
|
- %41 = load i32*, i32** %40, align 8
|
|
|
- %42 = load i32, i32* %5, align 4
|
|
|
- %43 = sext i32 %42 to i64
|
|
|
- %44 = getelementptr inbounds i32, i32* %41, i64 %43
|
|
|
- %45 = load i32, i32* %44, align 4
|
|
|
- %46 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %47 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %46, i32 0, i32 0
|
|
|
- %48 = load i32*, i32** %47, align 8
|
|
|
- %49 = load i32, i32* %5, align 4
|
|
|
- %50 = sub nsw i32 %49, 1
|
|
|
- %51 = sext i32 %50 to i64
|
|
|
- %52 = getelementptr inbounds i32, i32* %48, i64 %51
|
|
|
- %53 = load i32, i32* %52, align 4
|
|
|
- %54 = icmp ne i32 %45, %53
|
|
|
- br i1 %54, label %55, label %71
|
|
|
-
|
|
|
-55: ; preds = %38
|
|
|
- %56 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %57 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %56, i32 0, i32 0
|
|
|
- %58 = load i32*, i32** %57, align 8
|
|
|
- %59 = load i32, i32* %5, align 4
|
|
|
- %60 = sext i32 %59 to i64
|
|
|
- %61 = getelementptr inbounds i32, i32* %58, i64 %60
|
|
|
- %62 = load i32, i32* %61, align 4
|
|
|
- %63 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %64 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %63, i32 0, i32 0
|
|
|
- %65 = load i32*, i32** %64, align 8
|
|
|
- %66 = load i32, i32* %4, align 4
|
|
|
- %67 = sext i32 %66 to i64
|
|
|
- %68 = getelementptr inbounds i32, i32* %65, i64 %67
|
|
|
- store i32 %62, i32* %68, align 4
|
|
|
- %69 = load i32, i32* %4, align 4
|
|
|
- %70 = add nsw i32 %69, 1
|
|
|
- store i32 %70, i32* %4, align 4
|
|
|
- br label %71
|
|
|
-
|
|
|
-71: ; preds = %55, %38
|
|
|
- br label %72
|
|
|
-
|
|
|
-72: ; preds = %71
|
|
|
- %73 = load i32, i32* %5, align 4
|
|
|
- %74 = add nsw i32 %73, 1
|
|
|
- store i32 %74, i32* %5, align 4
|
|
|
- br label %32
|
|
|
-
|
|
|
-75: ; preds = %32
|
|
|
- %76 = load i32, i32* %4, align 4
|
|
|
- %77 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %78 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %77, i32 0, i32 1
|
|
|
- store i32 %76, i32* %78, align 8
|
|
|
- %79 = load %struct.DynamicArray*, %struct.DynamicArray** %2, align 8
|
|
|
- %80 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %79, i32 0, i32 3
|
|
|
- store i32 1, i32* %80, align 8
|
|
|
- br label %81
|
|
|
-
|
|
|
-81: ; preds = %75, %30, %19, %13
|
|
|
- ret void
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: noinline nounwind optnone uwtable
|
|
|
-define dso_local %struct.Point* @findCentroid(%struct.Point* %0, i32 %1, i32* %2) #0 !project_source !2 {
|
|
|
- %4 = alloca %struct.Point*, align 8
|
|
|
- %5 = alloca %struct.Point*, align 8
|
|
|
- %6 = alloca i32, align 4
|
|
|
- %7 = alloca i32*, align 8
|
|
|
- %8 = alloca %struct.Point*, align 8
|
|
|
- %9 = alloca double, align 8
|
|
|
- %10 = alloca double, align 8
|
|
|
- %11 = alloca double, align 8
|
|
|
- %12 = alloca i32, align 4
|
|
|
- store %struct.Point* %0, %struct.Point** %5, align 8
|
|
|
- store i32 %1, i32* %6, align 4
|
|
|
- store i32* %2, i32** %7, align 8
|
|
|
- %13 = load i32*, i32** %7, align 8
|
|
|
- store i32 0, i32* %13, align 4
|
|
|
- %14 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %15 = icmp ne %struct.Point* %14, null
|
|
|
- br i1 %15, label %16, label %19
|
|
|
-
|
|
|
-16: ; preds = %3
|
|
|
- %17 = load i32, i32* %6, align 4
|
|
|
- %18 = icmp sle i32 %17, 0
|
|
|
- br i1 %18, label %19, label %21
|
|
|
-
|
|
|
-19: ; preds = %16, %3
|
|
|
- %20 = load i32*, i32** %7, align 8
|
|
|
- store i32 1, i32* %20, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.50, i64 0, i64 0))
|
|
|
- store %struct.Point* null, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-21: ; preds = %16
|
|
|
- %22 = load i32, i32* %6, align 4
|
|
|
- %23 = icmp sgt i32 %22, 1000
|
|
|
- br i1 %23, label %24, label %26
|
|
|
-
|
|
|
-24: ; preds = %21
|
|
|
- %25 = load i32*, i32** %7, align 8
|
|
|
- store i32 3, i32* %25, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0))
|
|
|
- store %struct.Point* null, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-26: ; preds = %21
|
|
|
- %27 = call noalias i8* @malloc(i64 272) #7
|
|
|
- %28 = bitcast i8* %27 to %struct.Point*
|
|
|
- store %struct.Point* %28, %struct.Point** %8, align 8
|
|
|
- %29 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %30 = icmp ne %struct.Point* %29, null
|
|
|
- br i1 %30, label %33, label %31
|
|
|
-
|
|
|
-31: ; preds = %26
|
|
|
- %32 = load i32*, i32** %7, align 8
|
|
|
- store i32 2, i32* %32, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.52, i64 0, i64 0))
|
|
|
- store %struct.Point* null, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-33: ; preds = %26
|
|
|
- store double 0.000000e+00, double* %9, align 8
|
|
|
- store double 0.000000e+00, double* %10, align 8
|
|
|
- store double 0.000000e+00, double* %11, align 8
|
|
|
- store i32 0, i32* %12, align 4
|
|
|
- br label %34
|
|
|
-
|
|
|
-34: ; preds = %131, %33
|
|
|
- %35 = load i32, i32* %12, align 4
|
|
|
- %36 = load i32, i32* %6, align 4
|
|
|
- %37 = icmp slt i32 %35, %36
|
|
|
- br i1 %37, label %38, label %134
|
|
|
-
|
|
|
-38: ; preds = %34
|
|
|
- %39 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %40 = load i32, i32* %12, align 4
|
|
|
- %41 = sext i32 %40 to i64
|
|
|
- %42 = getelementptr inbounds %struct.Point, %struct.Point* %39, i64 %41
|
|
|
- %43 = getelementptr inbounds %struct.Point, %struct.Point* %42, i32 0, i32 3
|
|
|
- %44 = load double, double* %43, align 8
|
|
|
- %45 = fcmp ole double %44, 0.000000e+00
|
|
|
- br i1 %45, label %46, label %50
|
|
|
-
|
|
|
-46: ; preds = %38
|
|
|
- %47 = load i32*, i32** %7, align 8
|
|
|
- store i32 1, i32* %47, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.53, i64 0, i64 0))
|
|
|
- %48 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %49 = bitcast %struct.Point* %48 to i8*
|
|
|
- call void @free(i8* %49) #7
|
|
|
- store %struct.Point* null, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-50: ; preds = %38
|
|
|
- %51 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %52 = load i32, i32* %12, align 4
|
|
|
- %53 = sext i32 %52 to i64
|
|
|
- %54 = getelementptr inbounds %struct.Point, %struct.Point* %51, i64 %53
|
|
|
- %55 = getelementptr inbounds %struct.Point, %struct.Point* %54, i32 0, i32 3
|
|
|
- %56 = load double, double* %55, align 8
|
|
|
- %57 = load double, double* %9, align 8
|
|
|
- %58 = fadd double %57, %56
|
|
|
- store double %58, double* %9, align 8
|
|
|
- %59 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %60 = load i32, i32* %12, align 4
|
|
|
- %61 = sext i32 %60 to i64
|
|
|
- %62 = getelementptr inbounds %struct.Point, %struct.Point* %59, i64 %61
|
|
|
- %63 = getelementptr inbounds %struct.Point, %struct.Point* %62, i32 0, i32 0
|
|
|
- %64 = load i32, i32* %63, align 8
|
|
|
- %65 = sitofp i32 %64 to double
|
|
|
- %66 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %67 = load i32, i32* %12, align 4
|
|
|
- %68 = sext i32 %67 to i64
|
|
|
- %69 = getelementptr inbounds %struct.Point, %struct.Point* %66, i64 %68
|
|
|
- %70 = getelementptr inbounds %struct.Point, %struct.Point* %69, i32 0, i32 3
|
|
|
- %71 = load double, double* %70, align 8
|
|
|
- %72 = fmul double %65, %71
|
|
|
- %73 = load double, double* %10, align 8
|
|
|
- %74 = fadd double %73, %72
|
|
|
- store double %74, double* %10, align 8
|
|
|
- %75 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %76 = load i32, i32* %12, align 4
|
|
|
- %77 = sext i32 %76 to i64
|
|
|
- %78 = getelementptr inbounds %struct.Point, %struct.Point* %75, i64 %77
|
|
|
- %79 = getelementptr inbounds %struct.Point, %struct.Point* %78, i32 0, i32 1
|
|
|
- %80 = load i32, i32* %79, align 4
|
|
|
- %81 = sitofp i32 %80 to double
|
|
|
- %82 = load %struct.Point*, %struct.Point** %5, align 8
|
|
|
- %83 = load i32, i32* %12, align 4
|
|
|
- %84 = sext i32 %83 to i64
|
|
|
- %85 = getelementptr inbounds %struct.Point, %struct.Point* %82, i64 %84
|
|
|
- %86 = getelementptr inbounds %struct.Point, %struct.Point* %85, i32 0, i32 3
|
|
|
- %87 = load double, double* %86, align 8
|
|
|
- %88 = fmul double %81, %87
|
|
|
- %89 = load double, double* %11, align 8
|
|
|
- %90 = fadd double %89, %88
|
|
|
- store double %90, double* %11, align 8
|
|
|
- %91 = load double, double* %9, align 8
|
|
|
- %92 = fcmp uno double %91, %91
|
|
|
- br i1 %92, label %126, label %93
|
|
|
-
|
|
|
-93: ; preds = %50
|
|
|
- %94 = load double, double* %10, align 8
|
|
|
- %95 = fcmp uno double %94, %94
|
|
|
- br i1 %95, label %126, label %96
|
|
|
-
|
|
|
-96: ; preds = %93
|
|
|
- %97 = load double, double* %11, align 8
|
|
|
- %98 = fcmp uno double %97, %97
|
|
|
- br i1 %98, label %126, label %99
|
|
|
-
|
|
|
-99: ; preds = %96
|
|
|
- %100 = load double, double* %9, align 8
|
|
|
- %101 = call double @llvm.fabs.f64(double %100) #9
|
|
|
- %102 = fcmp oeq double %101, 0x7FF0000000000000
|
|
|
- %103 = bitcast double %100 to i64
|
|
|
- %104 = icmp slt i64 %103, 0
|
|
|
- %105 = select i1 %104, i32 -1, i32 1
|
|
|
- %106 = select i1 %102, i32 %105, i32 0
|
|
|
- %107 = icmp ne i32 %106, 0
|
|
|
- br i1 %107, label %126, label %108
|
|
|
-
|
|
|
-108: ; preds = %99
|
|
|
- %109 = load double, double* %10, align 8
|
|
|
- %110 = call double @llvm.fabs.f64(double %109) #9
|
|
|
- %111 = fcmp oeq double %110, 0x7FF0000000000000
|
|
|
- %112 = bitcast double %109 to i64
|
|
|
- %113 = icmp slt i64 %112, 0
|
|
|
- %114 = select i1 %113, i32 -1, i32 1
|
|
|
- %115 = select i1 %111, i32 %114, i32 0
|
|
|
- %116 = icmp ne i32 %115, 0
|
|
|
- br i1 %116, label %126, label %117
|
|
|
-
|
|
|
-117: ; preds = %108
|
|
|
- %118 = load double, double* %11, align 8
|
|
|
- %119 = call double @llvm.fabs.f64(double %118) #9
|
|
|
- %120 = fcmp oeq double %119, 0x7FF0000000000000
|
|
|
- %121 = bitcast double %118 to i64
|
|
|
- %122 = icmp slt i64 %121, 0
|
|
|
- %123 = select i1 %122, i32 -1, i32 1
|
|
|
- %124 = select i1 %120, i32 %123, i32 0
|
|
|
- %125 = icmp ne i32 %124, 0
|
|
|
- br i1 %125, label %126, label %130
|
|
|
-
|
|
|
-126: ; preds = %117, %108, %99, %96, %93, %50
|
|
|
- %127 = load i32*, i32** %7, align 8
|
|
|
- store i32 5, i32* %127, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.54, i64 0, i64 0))
|
|
|
- %128 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %129 = bitcast %struct.Point* %128 to i8*
|
|
|
- call void @free(i8* %129) #7
|
|
|
- store %struct.Point* null, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-130: ; preds = %117
|
|
|
- br label %131
|
|
|
-
|
|
|
-131: ; preds = %130
|
|
|
- %132 = load i32, i32* %12, align 4
|
|
|
- %133 = add nsw i32 %132, 1
|
|
|
- store i32 %133, i32* %12, align 4
|
|
|
- br label %34
|
|
|
-
|
|
|
-134: ; preds = %34
|
|
|
- %135 = load double, double* %9, align 8
|
|
|
- %136 = fcmp oeq double %135, 0.000000e+00
|
|
|
- br i1 %136, label %137, label %141
|
|
|
-
|
|
|
-137: ; preds = %134
|
|
|
- %138 = load i32*, i32** %7, align 8
|
|
|
- store i32 1, i32* %138, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.55, i64 0, i64 0))
|
|
|
- %139 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %140 = bitcast %struct.Point* %139 to i8*
|
|
|
- call void @free(i8* %140) #7
|
|
|
- store %struct.Point* null, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-141: ; preds = %134
|
|
|
- %142 = load double, double* %10, align 8
|
|
|
- %143 = load double, double* %9, align 8
|
|
|
- %144 = fdiv double %142, %143
|
|
|
- %145 = fptosi double %144 to i32
|
|
|
- %146 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %147 = getelementptr inbounds %struct.Point, %struct.Point* %146, i32 0, i32 0
|
|
|
- store i32 %145, i32* %147, align 8
|
|
|
- %148 = load double, double* %11, align 8
|
|
|
- %149 = load double, double* %9, align 8
|
|
|
- %150 = fdiv double %148, %149
|
|
|
- %151 = fptosi double %150 to i32
|
|
|
- %152 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %153 = getelementptr inbounds %struct.Point, %struct.Point* %152, i32 0, i32 1
|
|
|
- store i32 %151, i32* %153, align 4
|
|
|
- %154 = load double, double* %9, align 8
|
|
|
- %155 = load i32, i32* %6, align 4
|
|
|
- %156 = sitofp i32 %155 to double
|
|
|
- %157 = fdiv double %154, %156
|
|
|
- %158 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %159 = getelementptr inbounds %struct.Point, %struct.Point* %158, i32 0, i32 3
|
|
|
- store double %157, double* %159, align 8
|
|
|
- %160 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- %161 = getelementptr inbounds %struct.Point, %struct.Point* %160, i32 0, i32 2
|
|
|
- %162 = getelementptr inbounds [256 x i8], [256 x i8]* %161, i64 0, i64 0
|
|
|
- %163 = call i8* @strcpy(i8* %162, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0)) #7
|
|
|
- %164 = load %struct.Point*, %struct.Point** %8, align 8
|
|
|
- store %struct.Point* %164, %struct.Point** %4, align 8
|
|
|
- br label %165
|
|
|
-
|
|
|
-165: ; preds = %141, %137, %126, %46, %31, %24, %19
|
|
|
- %166 = load %struct.Point*, %struct.Point** %4, align 8
|
|
|
- ret %struct.Point* %166
|
|
|
-}
|
|
|
-
|
|
|
-; Function Attrs: nounwind
|
|
|
-declare dso_local i8* @strcpy(i8*, i8*) #1
|
|
|
-
|
|
|
-; Function Attrs: nounwind readonly
|
|
|
-declare dso_local i64 @strlen(i8*) #5
|
|
|
-
|
|
|
-; Function Attrs: argmemonly nounwind willreturn
|
|
|
-declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #6
|
|
|
-
|
|
|
-; Function Attrs: argmemonly nounwind willreturn
|
|
|
-declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #6
|
|
|
-
|
|
|
-define i32 @fused_performSimpleCalculations(i1 %0, i32 %1) {
|
|
|
-entry:
|
|
|
- %2 = alloca i32
|
|
|
- %3 = alloca i32
|
|
|
- %4 = alloca i32
|
|
|
- %5 = xor i1 %0, true
|
|
|
- br label %target_cond_0
|
|
|
-
|
|
|
-target_cond_0: ; preds = %entry
|
|
|
- br i1 %0, label %6, label %target_skip_0
|
|
|
-
|
|
|
-target_skip_0: ; preds = %target_cond_0
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-target_phi_0: ; preds = %6, %target_skip_0
|
|
|
- br label %bunker_cond_0
|
|
|
-
|
|
|
-6: ; preds = %target_cond_0
|
|
|
- store i32 %1, i32* %3, align 4
|
|
|
- store i32 0, i32* %4, align 4
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-bunker_cond_0: ; preds = %target_phi_0
|
|
|
- br i1 %5, label %7, label %bunker_skip_0
|
|
|
-
|
|
|
-bunker_skip_0: ; preds = %bunker_cond_0
|
|
|
- br label %bunker_phi_0
|
|
|
-
|
|
|
-bunker_phi_0: ; preds = %bunker_skip_0
|
|
|
- br label %target_cond_1
|
|
|
-
|
|
|
-7: ; preds = %bunker_cond_0
|
|
|
- store i32 100, i32* %2, align 4
|
|
|
- %8 = load i32, i32* %2, align 4
|
|
|
- %9 = icmp sgt i32 %8, 50
|
|
|
- br i1 %9, label %10, label %15
|
|
|
-
|
|
|
-10: ; preds = %7
|
|
|
- %11 = load i32, i32* %2, align 4
|
|
|
- %12 = mul nsw i32 %11, 2
|
|
|
- %13 = load i32, i32* @calculationResult, align 4
|
|
|
- %14 = add nsw i32 %13, %12
|
|
|
- store i32 %14, i32* @calculationResult, align 4
|
|
|
- br label %20
|
|
|
-
|
|
|
-15: ; preds = %7
|
|
|
- %16 = load i32, i32* %2, align 4
|
|
|
- %17 = sdiv i32 %16, 2
|
|
|
- %18 = load i32, i32* @calculationResult, align 4
|
|
|
- %19 = add nsw i32 %18, %17
|
|
|
- store i32 %19, i32* @calculationResult, align 4
|
|
|
- br label %20
|
|
|
-
|
|
|
-20: ; preds = %15, %10
|
|
|
- %21 = load i32, i32* %2, align 4
|
|
|
- %22 = srem i32 %21, 3
|
|
|
- %23 = icmp eq i32 %22, 0
|
|
|
- br i1 %23, label %24, label %27
|
|
|
-
|
|
|
-24: ; preds = %20
|
|
|
- %25 = load i32, i32* @calculationResult, align 4
|
|
|
- %26 = mul nsw i32 %25, 3
|
|
|
- store i32 %26, i32* @calculationResult, align 4
|
|
|
- br label %30
|
|
|
-
|
|
|
-27: ; preds = %20
|
|
|
- %28 = load i32, i32* @calculationResult, align 4
|
|
|
- %29 = add nsw i32 %28, 3
|
|
|
- store i32 %29, i32* @calculationResult, align 4
|
|
|
- br label %30
|
|
|
-
|
|
|
-30: ; preds = %27, %24
|
|
|
- %31 = load i32, i32* @calculationResult, align 4
|
|
|
- %32 = icmp sge i32 %31, 150
|
|
|
- br i1 %32, label %33, label %39
|
|
|
-
|
|
|
-33: ; preds = %30
|
|
|
- %34 = load i32, i32* @calculationResult, align 4
|
|
|
- %35 = icmp sle i32 %34, 300
|
|
|
- br i1 %35, label %36, label %39
|
|
|
-
|
|
|
-36: ; preds = %33
|
|
|
- %37 = load i32, i32* @calculationResult, align 4
|
|
|
- %38 = sub nsw i32 %37, 50
|
|
|
- store i32 %38, i32* @calculationResult, align 4
|
|
|
- br label %42
|
|
|
-
|
|
|
-39: ; preds = %33, %30
|
|
|
- %40 = load i32, i32* @calculationResult, align 4
|
|
|
- %41 = add nsw i32 %40, 50
|
|
|
- store i32 %41, i32* @calculationResult, align 4
|
|
|
- br label %42
|
|
|
-
|
|
|
-42: ; preds = %39, %36
|
|
|
- %43 = load i32, i32* @calculationResult, align 4
|
|
|
- %44 = srem i32 %43, 2
|
|
|
- %45 = icmp eq i32 %44, 0
|
|
|
- br i1 %45, label %46, label %49
|
|
|
-
|
|
|
-46: ; preds = %42
|
|
|
- %47 = load i32, i32* @calculationResult, align 4
|
|
|
- %48 = sdiv i32 %47, 2
|
|
|
- store i32 %48, i32* @calculationResult, align 4
|
|
|
- br label %52
|
|
|
-
|
|
|
-49: ; preds = %42
|
|
|
- %50 = load i32, i32* @calculationResult, align 4
|
|
|
- %51 = mul nsw i32 %50, 2
|
|
|
- store i32 %51, i32* @calculationResult, align 4
|
|
|
- br label %52
|
|
|
-
|
|
|
-52: ; preds = %49, %46
|
|
|
- %53 = load i32, i32* @calculationResult, align 4
|
|
|
- %54 = srem i32 %53, 10
|
|
|
- %55 = icmp slt i32 %54, 5
|
|
|
- br i1 %55, label %56, label %59
|
|
|
-
|
|
|
-56: ; preds = %52
|
|
|
- %57 = load i32, i32* @calculationResult, align 4
|
|
|
- %58 = add nsw i32 %57, 5
|
|
|
- store i32 %58, i32* @calculationResult, align 4
|
|
|
- br label %62
|
|
|
-
|
|
|
-59: ; preds = %52
|
|
|
- %60 = load i32, i32* @calculationResult, align 4
|
|
|
- %61 = sub nsw i32 %60, 5
|
|
|
- store i32 %61, i32* @calculationResult, align 4
|
|
|
- br label %62
|
|
|
-
|
|
|
-62: ; preds = %59, %56
|
|
|
- %63 = load i32, i32* @calculationResult, align 4
|
|
|
- %64 = icmp sgt i32 %63, 1000
|
|
|
- br i1 %64, label %65, label %66
|
|
|
-
|
|
|
-65: ; preds = %62
|
|
|
- store i32 1000, i32* @calculationResult, align 4
|
|
|
- br label %69
|
|
|
-
|
|
|
-66: ; preds = %62
|
|
|
- %67 = load i32, i32* @calculationResult, align 4
|
|
|
- %68 = add nsw i32 %67, 10
|
|
|
- store i32 %68, i32* @calculationResult, align 4
|
|
|
- br label %69
|
|
|
-
|
|
|
-69: ; preds = %66, %65
|
|
|
- %70 = load i32, i32* @calculationResult, align 4
|
|
|
- %71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.27, i64 0, i64 0), i32 %70)
|
|
|
- ret i32 0
|
|
|
-
|
|
|
-target_cond_1: ; preds = %bunker_phi_0
|
|
|
- br i1 %0, label %72, label %target_skip_1
|
|
|
-
|
|
|
-target_skip_1: ; preds = %target_cond_1
|
|
|
- br label %target_phi_1
|
|
|
-
|
|
|
-target_phi_1: ; preds = %target_skip_1
|
|
|
- ret i32 0
|
|
|
-
|
|
|
-72: ; preds = %75, %target_cond_1
|
|
|
- %73 = load i32, i32* %3, align 4
|
|
|
- %74 = icmp ne i32 %73, 0
|
|
|
- br i1 %74, label %75, label %82
|
|
|
-
|
|
|
-75: ; preds = %72
|
|
|
- %76 = load i32, i32* %3, align 4
|
|
|
- %77 = and i32 %76, 1
|
|
|
- %78 = load i32, i32* %4, align 4
|
|
|
- %79 = add nsw i32 %78, %77
|
|
|
- store i32 %79, i32* %4, align 4
|
|
|
- %80 = load i32, i32* %3, align 4
|
|
|
- %81 = ashr i32 %80, 1
|
|
|
- store i32 %81, i32* %3, align 4
|
|
|
- br label %72
|
|
|
-
|
|
|
-82: ; preds = %72
|
|
|
- %83 = load i32, i32* %4, align 4
|
|
|
- ret i32 %83
|
|
|
-}
|
|
|
-
|
|
|
-define %fused_return_calculateDistance_memoizedFib @fused_calculateDistance(i1 %0, %struct.Point* %1, %struct.Point* %2, i32* %3, i32 %4) {
|
|
|
-entry:
|
|
|
- %5 = alloca double
|
|
|
- %6 = alloca i32*
|
|
|
- %7 = alloca double
|
|
|
- %8 = alloca double
|
|
|
- %9 = alloca double
|
|
|
- %10 = alloca i32
|
|
|
- %11 = alloca i32
|
|
|
- %12 = xor i1 %0, true
|
|
|
- br label %target_cond_0
|
|
|
-
|
|
|
-target_cond_0: ; preds = %entry
|
|
|
- br i1 %0, label %13, label %target_skip_0
|
|
|
-
|
|
|
-target_skip_0: ; preds = %target_cond_0
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-target_phi_0: ; preds = %13, %target_skip_0
|
|
|
- br label %bunker_cond_0
|
|
|
-
|
|
|
-13: ; preds = %target_cond_0
|
|
|
- store i32 %4, i32* %11, align 4
|
|
|
- %14 = load i32, i32* %11, align 4
|
|
|
- %15 = sext i32 %14 to i64
|
|
|
- %16 = getelementptr inbounds [100 x i32], [100 x i32]* @cache, i64 0, i64 %15
|
|
|
- %17 = load i32, i32* %16, align 4
|
|
|
- %18 = icmp ne i32 %17, -1
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-bunker_cond_0: ; preds = %target_phi_0
|
|
|
- br i1 %12, label %19, label %bunker_skip_0
|
|
|
-
|
|
|
-bunker_skip_0: ; preds = %bunker_cond_0
|
|
|
- br label %bunker_phi_0
|
|
|
-
|
|
|
-bunker_phi_0: ; preds = %bunker_skip_0
|
|
|
- br label %target_cond_1
|
|
|
-
|
|
|
-19: ; preds = %bunker_cond_0
|
|
|
- store i32* %3, i32** %6, align 8
|
|
|
- %20 = load i32*, i32** %6, align 8
|
|
|
- store i32 0, i32* %20, align 4
|
|
|
- %21 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3
|
|
|
- %22 = load double, double* %21, align 8
|
|
|
- %23 = fcmp ole double %22, 0.000000e+00
|
|
|
- br i1 %23, label %28, label %24
|
|
|
-
|
|
|
-24: ; preds = %19
|
|
|
- %25 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 3
|
|
|
- %26 = load double, double* %25, align 8
|
|
|
- %27 = fcmp ole double %26, 0.000000e+00
|
|
|
- br i1 %27, label %28, label %30
|
|
|
-
|
|
|
-28: ; preds = %24, %19
|
|
|
- %29 = load i32*, i32** %6, align 8
|
|
|
- store i32 1, i32* %29, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.32, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %5, align 8
|
|
|
- br label %112
|
|
|
-
|
|
|
-30: ; preds = %24
|
|
|
- %31 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0
|
|
|
- %32 = load i32, i32* %31, align 8
|
|
|
- %33 = call i32 @abs(i32 %32) #8
|
|
|
- %34 = icmp sgt i32 %33, 1000
|
|
|
- br i1 %34, label %50, label %35
|
|
|
-
|
|
|
-35: ; preds = %30
|
|
|
- %36 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1
|
|
|
- %37 = load i32, i32* %36, align 4
|
|
|
- %38 = call i32 @abs(i32 %37) #8
|
|
|
- %39 = icmp sgt i32 %38, 1000
|
|
|
- br i1 %39, label %50, label %40
|
|
|
-
|
|
|
-40: ; preds = %35
|
|
|
- %41 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
|
|
|
- %42 = load i32, i32* %41, align 8
|
|
|
- %43 = call i32 @abs(i32 %42) #8
|
|
|
- %44 = icmp sgt i32 %43, 1000
|
|
|
- br i1 %44, label %50, label %45
|
|
|
-
|
|
|
-45: ; preds = %40
|
|
|
- %46 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
|
|
|
- %47 = load i32, i32* %46, align 4
|
|
|
- %48 = call i32 @abs(i32 %47) #8
|
|
|
- %49 = icmp sgt i32 %48, 1000
|
|
|
- br i1 %49, label %50, label %52
|
|
|
-
|
|
|
-50: ; preds = %45, %40, %35, %30
|
|
|
- %51 = load i32*, i32** %6, align 8
|
|
|
- store i32 3, i32* %51, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.33, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %5, align 8
|
|
|
- br label %112
|
|
|
-
|
|
|
-52: ; preds = %45
|
|
|
- %53 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
|
|
|
- %54 = load i32, i32* %53, align 8
|
|
|
- %55 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 0
|
|
|
- %56 = load i32, i32* %55, align 8
|
|
|
- %57 = sub nsw i32 %54, %56
|
|
|
- %58 = sitofp i32 %57 to double
|
|
|
- %59 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 3
|
|
|
- %60 = load double, double* %59, align 8
|
|
|
- %61 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3
|
|
|
- %62 = load double, double* %61, align 8
|
|
|
- %63 = fdiv double %60, %62
|
|
|
- %64 = call double @sqrt(double %63) #7
|
|
|
- %65 = fmul double %58, %64
|
|
|
- store double %65, double* %7, align 8
|
|
|
- %66 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
|
|
|
- %67 = load i32, i32* %66, align 4
|
|
|
- %68 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 1
|
|
|
- %69 = load i32, i32* %68, align 4
|
|
|
- %70 = sub nsw i32 %67, %69
|
|
|
- %71 = sitofp i32 %70 to double
|
|
|
- %72 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 3
|
|
|
- %73 = load double, double* %72, align 8
|
|
|
- %74 = getelementptr inbounds %struct.Point, %struct.Point* %1, i32 0, i32 3
|
|
|
- %75 = load double, double* %74, align 8
|
|
|
- %76 = fdiv double %73, %75
|
|
|
- %77 = call double @sqrt(double %76) #7
|
|
|
- %78 = fmul double %71, %77
|
|
|
- store double %78, double* %8, align 8
|
|
|
- %79 = load double, double* %7, align 8
|
|
|
- %80 = call double @llvm.fabs.f64(double %79)
|
|
|
- %81 = fcmp ogt double %80, 1.000000e+03
|
|
|
- br i1 %81, label %86, label %82
|
|
|
-
|
|
|
-82: ; preds = %52
|
|
|
- %83 = load double, double* %8, align 8
|
|
|
- %84 = call double @llvm.fabs.f64(double %83)
|
|
|
- %85 = fcmp ogt double %84, 1.000000e+03
|
|
|
- br i1 %85, label %86, label %88
|
|
|
-
|
|
|
-86: ; preds = %82, %52
|
|
|
- %87 = load i32*, i32** %6, align 8
|
|
|
- store i32 5, i32* %87, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.34, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %5, align 8
|
|
|
- br label %112
|
|
|
-
|
|
|
-88: ; preds = %82
|
|
|
- %89 = load double, double* %7, align 8
|
|
|
- %90 = load double, double* %7, align 8
|
|
|
- %91 = fmul double %89, %90
|
|
|
- %92 = load double, double* %8, align 8
|
|
|
- %93 = load double, double* %8, align 8
|
|
|
- %94 = fmul double %92, %93
|
|
|
- %95 = fadd double %91, %94
|
|
|
- %96 = call double @sqrt(double %95) #7
|
|
|
- store double %96, double* %9, align 8
|
|
|
- %97 = load double, double* %9, align 8
|
|
|
- %98 = fcmp uno double %97, %97
|
|
|
- br i1 %98, label %108, label %99
|
|
|
-
|
|
|
-99: ; preds = %88
|
|
|
- %100 = load double, double* %9, align 8
|
|
|
- %101 = call double @llvm.fabs.f64(double %100) #9
|
|
|
- %102 = fcmp oeq double %101, 0x7FF0000000000000
|
|
|
- %103 = bitcast double %100 to i64
|
|
|
- %104 = icmp slt i64 %103, 0
|
|
|
- %105 = select i1 %104, i32 -1, i32 1
|
|
|
- %106 = select i1 %102, i32 %105, i32 0
|
|
|
- %107 = icmp ne i32 %106, 0
|
|
|
- br i1 %107, label %108, label %110
|
|
|
-
|
|
|
-108: ; preds = %99, %88
|
|
|
- %109 = load i32*, i32** %6, align 8
|
|
|
- store i32 8, i32* %109, align 4
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.35, i64 0, i64 0))
|
|
|
- store double -1.000000e+00, double* %5, align 8
|
|
|
- br label %112
|
|
|
-
|
|
|
-110: ; preds = %99
|
|
|
- %111 = load double, double* %9, align 8
|
|
|
- store double %111, double* %5, align 8
|
|
|
- br label %112
|
|
|
-
|
|
|
-112: ; preds = %110, %108, %86, %50, %28
|
|
|
- %113 = load double, double* %5, align 8
|
|
|
- %114 = insertvalue %fused_return_calculateDistance_memoizedFib { i32 0, double undef }, double %113, 1
|
|
|
- ret %fused_return_calculateDistance_memoizedFib %114
|
|
|
-
|
|
|
-target_cond_1: ; preds = %bunker_phi_0
|
|
|
- br i1 %0, label %115, label %target_skip_1
|
|
|
-
|
|
|
-target_skip_1: ; preds = %target_cond_1
|
|
|
- br label %target_phi_1
|
|
|
-
|
|
|
-target_phi_1: ; preds = %target_skip_1
|
|
|
- ret %fused_return_calculateDistance_memoizedFib zeroinitializer
|
|
|
-
|
|
|
-115: ; preds = %target_cond_1
|
|
|
- %116 = load i32, i32* %10, align 4
|
|
|
- %117 = insertvalue %fused_return_calculateDistance_memoizedFib undef, i32 %116, 0
|
|
|
- %118 = insertvalue %fused_return_calculateDistance_memoizedFib %117, double 0.000000e+00, 1
|
|
|
- ret %fused_return_calculateDistance_memoizedFib %118
|
|
|
-}
|
|
|
-
|
|
|
-define %fused_return_validateMatrix_processMatrix @fused_validateMatrix(i1 %0, %struct.Matrix* %1, [100 x i32]* %2, i32 %3) {
|
|
|
-entry:
|
|
|
- %4 = alloca i32
|
|
|
- %5 = alloca %struct.Matrix*
|
|
|
- %6 = alloca i32
|
|
|
- %7 = alloca [100 x i32]*
|
|
|
- %8 = alloca i32
|
|
|
- %9 = alloca i32
|
|
|
- %10 = alloca i32
|
|
|
- %11 = alloca i32
|
|
|
- %12 = xor i1 %0, true
|
|
|
- br label %target_cond_0
|
|
|
-
|
|
|
-target_cond_0: ; preds = %entry
|
|
|
- br i1 %0, label %13, label %target_skip_0
|
|
|
-
|
|
|
-target_skip_0: ; preds = %target_cond_0
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-target_phi_0: ; preds = %13, %target_skip_0
|
|
|
- br label %bunker_cond_0
|
|
|
-
|
|
|
-13: ; preds = %target_cond_0
|
|
|
- store [100 x i32]* %2, [100 x i32]** %7, align 8
|
|
|
- store i32 %3, i32* %8, align 4
|
|
|
- store i32 0, i32* %9, align 4
|
|
|
- store i32 0, i32* %10, align 4
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-bunker_cond_0: ; preds = %target_phi_0
|
|
|
- br i1 %12, label %14, label %bunker_skip_0
|
|
|
-
|
|
|
-bunker_skip_0: ; preds = %bunker_cond_0
|
|
|
- br label %bunker_phi_0
|
|
|
-
|
|
|
-bunker_phi_0: ; preds = %bunker_skip_0
|
|
|
- br label %target_cond_1
|
|
|
-
|
|
|
-14: ; preds = %bunker_cond_0
|
|
|
- store %struct.Matrix* %1, %struct.Matrix** %5, align 8
|
|
|
- %15 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %16 = icmp ne %struct.Matrix* %15, null
|
|
|
- br i1 %16, label %18, label %17
|
|
|
-
|
|
|
-17: ; preds = %14
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
|
|
|
- store i32 7, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-18: ; preds = %14
|
|
|
- %19 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %20 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %19, i32 0, i32 0
|
|
|
- %21 = load i32**, i32*** %20, align 8
|
|
|
- %22 = icmp ne i32** %21, null
|
|
|
- br i1 %22, label %24, label %23
|
|
|
-
|
|
|
-23: ; preds = %18
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
|
|
|
- store i32 7, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-24: ; preds = %18
|
|
|
- %25 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %26 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %25, i32 0, i32 1
|
|
|
- %27 = load i32, i32* %26, align 8
|
|
|
- %28 = icmp slt i32 %27, 1
|
|
|
- br i1 %28, label %34, label %29
|
|
|
-
|
|
|
-29: ; preds = %24
|
|
|
- %30 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %31 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %30, i32 0, i32 2
|
|
|
- %32 = load i32, i32* %31, align 4
|
|
|
- %33 = icmp slt i32 %32, 1
|
|
|
- br i1 %33, label %34, label %35
|
|
|
-
|
|
|
-34: ; preds = %29, %24
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
|
|
|
- store i32 1, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-35: ; preds = %29
|
|
|
- %36 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %37 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %36, i32 0, i32 1
|
|
|
- %38 = load i32, i32* %37, align 8
|
|
|
- %39 = icmp sgt i32 %38, 100
|
|
|
- br i1 %39, label %45, label %40
|
|
|
-
|
|
|
-40: ; preds = %35
|
|
|
- %41 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %42 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %41, i32 0, i32 2
|
|
|
- %43 = load i32, i32* %42, align 4
|
|
|
- %44 = icmp sgt i32 %43, 100
|
|
|
- br i1 %44, label %45, label %46
|
|
|
-
|
|
|
-45: ; preds = %40, %35
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0))
|
|
|
- store i32 3, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-46: ; preds = %40
|
|
|
- store i32 0, i32* %6, align 4
|
|
|
- br label %47
|
|
|
-
|
|
|
-47: ; preds = %64, %46
|
|
|
- %48 = load i32, i32* %6, align 4
|
|
|
- %49 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %50 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %49, i32 0, i32 1
|
|
|
- %51 = load i32, i32* %50, align 8
|
|
|
- %52 = icmp slt i32 %48, %51
|
|
|
- br i1 %52, label %53, label %67
|
|
|
-
|
|
|
-53: ; preds = %47
|
|
|
- %54 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %55 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %54, i32 0, i32 0
|
|
|
- %56 = load i32**, i32*** %55, align 8
|
|
|
- %57 = load i32, i32* %6, align 4
|
|
|
- %58 = sext i32 %57 to i64
|
|
|
- %59 = getelementptr inbounds i32*, i32** %56, i64 %58
|
|
|
- %60 = load i32*, i32** %59, align 8
|
|
|
- %61 = icmp ne i32* %60, null
|
|
|
- br i1 %61, label %63, label %62
|
|
|
-
|
|
|
-62: ; preds = %53
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.47, i64 0, i64 0))
|
|
|
- store i32 7, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-63: ; preds = %53
|
|
|
- br label %64
|
|
|
-
|
|
|
-64: ; preds = %63
|
|
|
- %65 = load i32, i32* %6, align 4
|
|
|
- %66 = add nsw i32 %65, 1
|
|
|
- store i32 %66, i32* %6, align 4
|
|
|
- br label %47
|
|
|
-
|
|
|
-67: ; preds = %47
|
|
|
- %68 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %69 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %68, i32 0, i32 1
|
|
|
- %70 = load i32, i32* %69, align 8
|
|
|
- %71 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %72 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %71, i32 0, i32 2
|
|
|
- %73 = load i32, i32* %72, align 4
|
|
|
- %74 = icmp eq i32 %70, %73
|
|
|
- %75 = zext i1 %74 to i32
|
|
|
- %76 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %77 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %76, i32 0, i32 3
|
|
|
- %78 = load i32, i32* %77, align 8
|
|
|
- %79 = icmp ne i32 %75, %78
|
|
|
- br i1 %79, label %80, label %81
|
|
|
-
|
|
|
-80: ; preds = %67
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.48, i64 0, i64 0))
|
|
|
- store i32 1, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-81: ; preds = %67
|
|
|
- store i32 0, i32* %4, align 4
|
|
|
- br label %82
|
|
|
-
|
|
|
-82: ; preds = %81, %80, %62, %45, %34, %23, %17
|
|
|
- %83 = load i32, i32* %4, align 4
|
|
|
- %84 = insertvalue %fused_return_validateMatrix_processMatrix { i32 0, i32 undef }, i32 %83, 1
|
|
|
- ret %fused_return_validateMatrix_processMatrix %84
|
|
|
-
|
|
|
-target_cond_1: ; preds = %bunker_phi_0
|
|
|
- br i1 %0, label %85, label %target_skip_1
|
|
|
-
|
|
|
-target_skip_1: ; preds = %target_cond_1
|
|
|
- br label %target_phi_1
|
|
|
-
|
|
|
-target_phi_1: ; preds = %158, %target_skip_1
|
|
|
- ret %fused_return_validateMatrix_processMatrix zeroinitializer
|
|
|
-
|
|
|
-85: ; preds = %86, %target_cond_1
|
|
|
- store i32 0, i32* %11, align 4
|
|
|
- br label %94
|
|
|
-
|
|
|
-86: ; No predecessors!
|
|
|
- %87 = load i32, i32* %10, align 4
|
|
|
- %88 = load i32, i32* %8, align 4
|
|
|
- %89 = icmp slt i32 %87, %88
|
|
|
- br i1 %89, label %85, label %90
|
|
|
-
|
|
|
-90: ; preds = %86
|
|
|
- %91 = load i32, i32* %9, align 4
|
|
|
- %92 = insertvalue %fused_return_validateMatrix_processMatrix undef, i32 %91, 0
|
|
|
- %93 = insertvalue %fused_return_validateMatrix_processMatrix %92, i32 0, 1
|
|
|
- ret %fused_return_validateMatrix_processMatrix %93
|
|
|
-
|
|
|
-94: ; preds = %155, %85
|
|
|
- %95 = load i32, i32* %11, align 4
|
|
|
- %96 = load i32, i32* %8, align 4
|
|
|
- %97 = icmp slt i32 %95, %96
|
|
|
- br i1 %97, label %98, label %102
|
|
|
-
|
|
|
-98: ; preds = %94
|
|
|
- %99 = load i32, i32* %10, align 4
|
|
|
- %100 = load i32, i32* %11, align 4
|
|
|
- %101 = icmp eq i32 %99, %100
|
|
|
- br i1 %101, label %103, label %114
|
|
|
-
|
|
|
-102: ; preds = %94
|
|
|
- br label %158
|
|
|
-
|
|
|
-103: ; preds = %98
|
|
|
- %104 = load [100 x i32]*, [100 x i32]** %7, align 8
|
|
|
- %105 = load i32, i32* %10, align 4
|
|
|
- %106 = sext i32 %105 to i64
|
|
|
- %107 = getelementptr inbounds [100 x i32], [100 x i32]* %104, i64 %106
|
|
|
- %108 = load i32, i32* %11, align 4
|
|
|
- %109 = sext i32 %108 to i64
|
|
|
- %110 = getelementptr inbounds [100 x i32], [100 x i32]* %107, i64 0, i64 %109
|
|
|
- %111 = load i32, i32* %110, align 4
|
|
|
- %112 = srem i32 %111, 2
|
|
|
- %113 = icmp eq i32 %112, 0
|
|
|
- br i1 %113, label %118, label %129
|
|
|
-
|
|
|
-114: ; preds = %98
|
|
|
- %115 = load i32, i32* %10, align 4
|
|
|
- %116 = load i32, i32* %11, align 4
|
|
|
- %117 = icmp slt i32 %115, %116
|
|
|
- br i1 %117, label %142, label %154
|
|
|
-
|
|
|
-118: ; preds = %103
|
|
|
- %119 = load [100 x i32]*, [100 x i32]** %7, align 8
|
|
|
- %120 = load i32, i32* %10, align 4
|
|
|
- %121 = sext i32 %120 to i64
|
|
|
- %122 = getelementptr inbounds [100 x i32], [100 x i32]* %119, i64 %121
|
|
|
- %123 = load i32, i32* %11, align 4
|
|
|
- %124 = sext i32 %123 to i64
|
|
|
- %125 = getelementptr inbounds [100 x i32], [100 x i32]* %122, i64 0, i64 %124
|
|
|
- %126 = load i32, i32* %125, align 4
|
|
|
- %127 = load i32, i32* %9, align 4
|
|
|
- %128 = add nsw i32 %127, %126
|
|
|
- store i32 %128, i32* %9, align 4
|
|
|
- br label %140
|
|
|
-
|
|
|
-129: ; preds = %103
|
|
|
- %130 = load [100 x i32]*, [100 x i32]** %7, align 8
|
|
|
- %131 = load i32, i32* %10, align 4
|
|
|
- %132 = sext i32 %131 to i64
|
|
|
- %133 = getelementptr inbounds [100 x i32], [100 x i32]* %130, i64 %132
|
|
|
- %134 = load i32, i32* %11, align 4
|
|
|
- %135 = sext i32 %134 to i64
|
|
|
- %136 = getelementptr inbounds [100 x i32], [100 x i32]* %133, i64 0, i64 %135
|
|
|
- %137 = load i32, i32* %136, align 4
|
|
|
- %138 = load i32, i32* %9, align 4
|
|
|
- %139 = sub nsw i32 %138, %137
|
|
|
- store i32 %139, i32* %9, align 4
|
|
|
- br label %140
|
|
|
-
|
|
|
-140: ; preds = %129, %118
|
|
|
- br label %141
|
|
|
-
|
|
|
-141: ; preds = %154, %140
|
|
|
- br label %155
|
|
|
-
|
|
|
-142: ; preds = %114
|
|
|
- %143 = load [100 x i32]*, [100 x i32]** %7, align 8
|
|
|
- %144 = load i32, i32* %10, align 4
|
|
|
- %145 = sext i32 %144 to i64
|
|
|
- %146 = getelementptr inbounds [100 x i32], [100 x i32]* %143, i64 %145
|
|
|
- %147 = load i32, i32* %11, align 4
|
|
|
- %148 = sext i32 %147 to i64
|
|
|
- %149 = getelementptr inbounds [100 x i32], [100 x i32]* %146, i64 0, i64 %148
|
|
|
- %150 = load i32, i32* %149, align 4
|
|
|
- %151 = call i32 @fused_performSimpleCalculations(i1 true, i32 %150)
|
|
|
- %152 = load i32, i32* %9, align 4
|
|
|
- %153 = add nsw i32 %152, %151
|
|
|
- store i32 %153, i32* %9, align 4
|
|
|
- br label %154
|
|
|
-
|
|
|
-154: ; preds = %142, %114
|
|
|
- br label %141
|
|
|
-
|
|
|
-155: ; preds = %141
|
|
|
- %156 = load i32, i32* %11, align 4
|
|
|
- %157 = add nsw i32 %156, 1
|
|
|
- store i32 %157, i32* %11, align 4
|
|
|
- br label %94
|
|
|
-
|
|
|
-158: ; preds = %102
|
|
|
- %159 = load i32, i32* %10, align 4
|
|
|
- %160 = add nsw i32 %159, 1
|
|
|
- store i32 %160, i32* %10, align 4
|
|
|
- br label %target_phi_1
|
|
|
-}
|
|
|
-
|
|
|
-define i32 @fused_pushBack(i1 %0, %struct.DynamicArray* %1, i32 %2) {
|
|
|
-entry:
|
|
|
- %3 = alloca %struct.DynamicArray*
|
|
|
- %4 = alloca i32
|
|
|
- %5 = alloca i32
|
|
|
- %6 = alloca i32*
|
|
|
- %7 = alloca [14 x i8]
|
|
|
- %8 = alloca [8 x i32]
|
|
|
- %9 = alloca i32
|
|
|
- %10 = alloca [100 x [100 x i32]]
|
|
|
- %11 = alloca i32
|
|
|
- %12 = alloca i32
|
|
|
- %13 = alloca i32
|
|
|
- %14 = xor i1 %0, true
|
|
|
- br label %target_cond_0
|
|
|
-
|
|
|
-target_cond_0: ; preds = %entry
|
|
|
- br i1 %0, label %15, label %target_skip_0
|
|
|
-
|
|
|
-target_skip_0: ; preds = %target_cond_0
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-target_phi_0: ; preds = %15, %target_skip_0
|
|
|
- br label %bunker_cond_0
|
|
|
-
|
|
|
-15: ; preds = %target_cond_0
|
|
|
- %16 = call %fused_return_multiplyMatrices_testPoints @fused_multiplyMatrices(i1 true, %struct.Matrix* null, %struct.Matrix* null, i32 5)
|
|
|
- %extracted_target_return = extractvalue %fused_return_multiplyMatrices_testPoints %16, 0
|
|
|
- call void @llvm.memset.p0i8.i64(i8* align 16 bitcast ([100 x i32]* @cache to i8*), i8 -1, i64 400, i1 false)
|
|
|
- %17 = bitcast [14 x i8]* %7 to i8*
|
|
|
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %17, i8* align 1 getelementptr inbounds ([14 x i8], [14 x i8]* @__const.projectB_main.str, i32 0, i32 0), i64 14, i1 false)
|
|
|
- %18 = getelementptr inbounds [14 x i8], [14 x i8]* %7, i64 0, i64 0
|
|
|
- %19 = call i8* @fused_getErrorMessage(i1 true, i8* %18)
|
|
|
- %20 = bitcast [8 x i32]* %8 to i8*
|
|
|
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %20, i8* align 16 bitcast ([8 x i32]* @__const.projectB_main.arr to i8*), i64 32, i1 false)
|
|
|
- store i32 8, i32* %9, align 4
|
|
|
- %21 = bitcast [100 x [100 x i32]]* %10 to i8*
|
|
|
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 %21, i8* align 16 bitcast (<{ <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, <{ i32, i32, i32, [97 x i32] }>, [97 x <{ i32, i32, i32, [97 x i32] }>] }>* @__const.projectB_main.matrix to i8*), i64 40000, i1 false)
|
|
|
- %22 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %10, i64 0, i64 0
|
|
|
- %23 = call %fused_return_validateMatrix_processMatrix @fused_validateMatrix(i1 true, %struct.Matrix* null, [100 x i32]* %22, i32 3)
|
|
|
- %extracted_target_return2target_ = extractvalue %fused_return_validateMatrix_processMatrix %23, 0
|
|
|
- store i32 %extracted_target_return2target_, i32* %11, align 4
|
|
|
- store i32 0, i32* %12, align 4
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-bunker_cond_0: ; preds = %target_phi_0
|
|
|
- br i1 %14, label %24, label %bunker_skip_0
|
|
|
-
|
|
|
-bunker_skip_0: ; preds = %bunker_cond_0
|
|
|
- br label %bunker_phi_0
|
|
|
-
|
|
|
-bunker_phi_0: ; preds = %bunker_skip_0
|
|
|
- br label %target_cond_1
|
|
|
-
|
|
|
-24: ; preds = %bunker_cond_0
|
|
|
- store %struct.DynamicArray* %1, %struct.DynamicArray** %3, align 8
|
|
|
- store i32 %2, i32* %4, align 4
|
|
|
- %25 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %26 = icmp ne %struct.DynamicArray* %25, null
|
|
|
- br i1 %26, label %28, label %27
|
|
|
-
|
|
|
-27: ; preds = %24
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
|
|
|
- br label %109
|
|
|
-
|
|
|
-28: ; preds = %24
|
|
|
- %29 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %30 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %29, i32 0, i32 1
|
|
|
- %31 = load i32, i32* %30, align 8
|
|
|
- %32 = icmp sge i32 %31, 1000
|
|
|
- br i1 %32, label %33, label %34
|
|
|
-
|
|
|
-33: ; preds = %28
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
|
|
|
- br label %109
|
|
|
-
|
|
|
-34: ; preds = %28
|
|
|
- %35 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %36 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %35, i32 0, i32 1
|
|
|
- %37 = load i32, i32* %36, align 8
|
|
|
- %38 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %39 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %38, i32 0, i32 2
|
|
|
- %40 = load i32, i32* %39, align 4
|
|
|
- %41 = icmp sge i32 %37, %40
|
|
|
- br i1 %41, label %42, label %70
|
|
|
-
|
|
|
-42: ; preds = %34
|
|
|
- %43 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %44 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %43, i32 0, i32 2
|
|
|
- %45 = load i32, i32* %44, align 4
|
|
|
- %46 = mul nsw i32 %45, 2
|
|
|
- store i32 %46, i32* %5, align 4
|
|
|
- %47 = load i32, i32* %5, align 4
|
|
|
- %48 = icmp sgt i32 %47, 1000
|
|
|
- br i1 %48, label %49, label %50
|
|
|
-
|
|
|
-49: ; preds = %42
|
|
|
- store i32 1000, i32* %5, align 4
|
|
|
- br label %50
|
|
|
-
|
|
|
-50: ; preds = %49, %42
|
|
|
- %51 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %52 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %51, i32 0, i32 0
|
|
|
- %53 = load i32*, i32** %52, align 8
|
|
|
- %54 = bitcast i32* %53 to i8*
|
|
|
- %55 = load i32, i32* %5, align 4
|
|
|
- %56 = sext i32 %55 to i64
|
|
|
- %57 = mul i64 4, %56
|
|
|
- %58 = call i8* @realloc(i8* %54, i64 %57) #7
|
|
|
- %59 = bitcast i8* %58 to i32*
|
|
|
- store i32* %59, i32** %6, align 8
|
|
|
- %60 = load i32*, i32** %6, align 8
|
|
|
- %61 = icmp ne i32* %60, null
|
|
|
- br i1 %61, label %63, label %62
|
|
|
-
|
|
|
-62: ; preds = %50
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.12, i64 0, i64 0))
|
|
|
- br label %109
|
|
|
-
|
|
|
-63: ; preds = %50
|
|
|
- %64 = load i32*, i32** %6, align 8
|
|
|
- %65 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %66 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %65, i32 0, i32 0
|
|
|
- store i32* %64, i32** %66, align 8
|
|
|
- %67 = load i32, i32* %5, align 4
|
|
|
- %68 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %69 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %68, i32 0, i32 2
|
|
|
- store i32 %67, i32* %69, align 4
|
|
|
- br label %70
|
|
|
-
|
|
|
-70: ; preds = %63, %34
|
|
|
- %71 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %72 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %71, i32 0, i32 3
|
|
|
- %73 = load i32, i32* %72, align 8
|
|
|
- %74 = icmp ne i32 %73, 0
|
|
|
- br i1 %74, label %75, label %96
|
|
|
-
|
|
|
-75: ; preds = %70
|
|
|
- %76 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %77 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %76, i32 0, i32 1
|
|
|
- %78 = load i32, i32* %77, align 8
|
|
|
- %79 = icmp sgt i32 %78, 0
|
|
|
- br i1 %79, label %80, label %96
|
|
|
-
|
|
|
-80: ; preds = %75
|
|
|
- %81 = load i32, i32* %4, align 4
|
|
|
- %82 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %83 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %82, i32 0, i32 0
|
|
|
- %84 = load i32*, i32** %83, align 8
|
|
|
- %85 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %86 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %85, i32 0, i32 1
|
|
|
- %87 = load i32, i32* %86, align 8
|
|
|
- %88 = sub nsw i32 %87, 1
|
|
|
- %89 = sext i32 %88 to i64
|
|
|
- %90 = getelementptr inbounds i32, i32* %84, i64 %89
|
|
|
- %91 = load i32, i32* %90, align 4
|
|
|
- %92 = icmp slt i32 %81, %91
|
|
|
- br i1 %92, label %93, label %96
|
|
|
-
|
|
|
-93: ; preds = %80
|
|
|
- %94 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %95 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %94, i32 0, i32 3
|
|
|
- store i32 0, i32* %95, align 8
|
|
|
- br label %96
|
|
|
-
|
|
|
-96: ; preds = %93, %80, %75, %70
|
|
|
- %97 = load i32, i32* %4, align 4
|
|
|
- %98 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %99 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %98, i32 0, i32 0
|
|
|
- %100 = load i32*, i32** %99, align 8
|
|
|
- %101 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %102 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %101, i32 0, i32 1
|
|
|
- %103 = load i32, i32* %102, align 8
|
|
|
- %104 = add nsw i32 %103, 1
|
|
|
- store i32 %104, i32* %102, align 8
|
|
|
- %105 = sext i32 %103 to i64
|
|
|
- %106 = getelementptr inbounds i32, i32* %100, i64 %105
|
|
|
- store i32 %97, i32* %106, align 4
|
|
|
- %107 = load %struct.DynamicArray*, %struct.DynamicArray** %3, align 8
|
|
|
- %108 = getelementptr inbounds %struct.DynamicArray, %struct.DynamicArray* %107, i32 0, i32 4
|
|
|
- store i32 1, i32* %108, align 4
|
|
|
- br label %109
|
|
|
-
|
|
|
-109: ; preds = %96, %62, %33, %27
|
|
|
- ret i32 0
|
|
|
-
|
|
|
-target_cond_1: ; preds = %bunker_phi_0
|
|
|
- br i1 %0, label %110, label %target_skip_1
|
|
|
-
|
|
|
-target_skip_1: ; preds = %target_cond_1
|
|
|
- br label %target_phi_1
|
|
|
-
|
|
|
-target_phi_1: ; preds = %target_skip_1
|
|
|
- ret i32 0
|
|
|
-
|
|
|
-110: ; preds = %115, %target_cond_1
|
|
|
- %111 = load i32, i32* %12, align 4
|
|
|
- %112 = call %fused_return_calculateDistance_memoizedFib @fused_calculateDistance(i1 true, %struct.Point* null, %struct.Point* null, i32* null, i32 %111)
|
|
|
- %extracted_target_return1target_ = extractvalue %fused_return_calculateDistance_memoizedFib %112, 0
|
|
|
- %113 = load i32, i32* %12, align 4
|
|
|
- %114 = add nsw i32 %113, 1
|
|
|
- store i32 %114, i32* %12, align 4
|
|
|
- br label %115
|
|
|
-
|
|
|
-115: ; preds = %110
|
|
|
- %116 = load i32, i32* %12, align 4
|
|
|
- %117 = icmp slt i32 %116, 10
|
|
|
- br i1 %117, label %110, label %118
|
|
|
-
|
|
|
-118: ; preds = %115
|
|
|
- %119 = load i32, i32* %11, align 4
|
|
|
- %120 = icmp sgt i32 %119, 0
|
|
|
- br i1 %120, label %121, label %123
|
|
|
-
|
|
|
-121: ; preds = %118
|
|
|
- %122 = call %fused_return_calculateDistance_memoizedFib @fused_calculateDistance(i1 true, %struct.Point* null, %struct.Point* null, i32* null, i32 7)
|
|
|
- %extracted_target_returntarget_ = extractvalue %fused_return_calculateDistance_memoizedFib %122, 0
|
|
|
- store i32 %extracted_target_returntarget_, i32* %13, align 4
|
|
|
- br label %126
|
|
|
-
|
|
|
-123: ; preds = %118
|
|
|
- %124 = load i32, i32* %11, align 4
|
|
|
- %125 = call i32 @fused_performSimpleCalculations(i1 true, i32 %124)
|
|
|
- store i32 %125, i32* %13, align 4
|
|
|
- br label %126
|
|
|
-
|
|
|
-126: ; preds = %123, %121
|
|
|
- %127 = load i32, i32* %13, align 4
|
|
|
- ret i32 %127
|
|
|
-}
|
|
|
-
|
|
|
-define i8* @fused_getErrorMessage(i1 %0, i8* %1) {
|
|
|
-entry:
|
|
|
- %2 = alloca i8*
|
|
|
- %3 = alloca i32
|
|
|
- %4 = alloca i32
|
|
|
- %5 = alloca i8
|
|
|
- %6 = xor i1 %0, true
|
|
|
- br label %target_cond_0
|
|
|
-
|
|
|
-target_cond_0: ; preds = %entry
|
|
|
- br i1 %0, label %7, label %target_skip_0
|
|
|
-
|
|
|
-target_skip_0: ; preds = %target_cond_0
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-target_phi_0: ; preds = %7, %target_skip_0
|
|
|
- br label %bunker_cond_0
|
|
|
-
|
|
|
-7: ; preds = %target_cond_0
|
|
|
- store i8* %1, i8** %2, align 8
|
|
|
- %8 = load i8*, i8** %2, align 8
|
|
|
- %9 = call i64 @strlen(i8* %8) #10
|
|
|
- %10 = trunc i64 %9 to i32
|
|
|
- store i32 %10, i32* %3, align 4
|
|
|
- store i32 0, i32* %4, align 4
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-bunker_cond_0: ; preds = %target_phi_0
|
|
|
- br i1 %6, label %11, label %bunker_skip_0
|
|
|
-
|
|
|
-bunker_skip_0: ; preds = %bunker_cond_0
|
|
|
- br label %bunker_phi_0
|
|
|
-
|
|
|
-bunker_phi_0: ; preds = %bunker_skip_0
|
|
|
- br label %target_cond_1
|
|
|
-
|
|
|
-11: ; preds = %bunker_cond_0
|
|
|
- %12 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- %13 = icmp ne i8* %12, null
|
|
|
- br i1 %13, label %14, label %16
|
|
|
-
|
|
|
-14: ; preds = %11
|
|
|
- %15 = load i8*, i8** @globalErrorMessage, align 8
|
|
|
- br label %17
|
|
|
-
|
|
|
-16: ; preds = %11
|
|
|
- br label %17
|
|
|
-
|
|
|
-17: ; preds = %16, %14
|
|
|
- %18 = phi i8* [ %15, %14 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), %16 ]
|
|
|
- ret i8* %18
|
|
|
-
|
|
|
-target_cond_1: ; preds = %bunker_phi_0
|
|
|
- br i1 %0, label %19, label %target_skip_1
|
|
|
-
|
|
|
-target_skip_1: ; preds = %target_cond_1
|
|
|
- br label %target_phi_1
|
|
|
-
|
|
|
-target_phi_1: ; preds = %51, %target_skip_1
|
|
|
- ret i8* null
|
|
|
-
|
|
|
-19: ; preds = %target_cond_1
|
|
|
- %20 = load i32, i32* %4, align 4
|
|
|
- %21 = load i32, i32* %3, align 4
|
|
|
- %22 = sdiv i32 %21, 2
|
|
|
- %23 = icmp slt i32 %20, %22
|
|
|
- br i1 %23, label %24, label %50
|
|
|
-
|
|
|
-24: ; preds = %19
|
|
|
- %25 = load i8*, i8** %2, align 8
|
|
|
- %26 = load i32, i32* %4, align 4
|
|
|
- %27 = sext i32 %26 to i64
|
|
|
- %28 = getelementptr inbounds i8, i8* %25, i64 %27
|
|
|
- %29 = load i8, i8* %28, align 1
|
|
|
- store i8 %29, i8* %5, align 1
|
|
|
- %30 = load i8*, i8** %2, align 8
|
|
|
- %31 = load i32, i32* %3, align 4
|
|
|
- %32 = sub nsw i32 %31, 1
|
|
|
- %33 = load i32, i32* %4, align 4
|
|
|
- %34 = sub nsw i32 %32, %33
|
|
|
- %35 = sext i32 %34 to i64
|
|
|
- %36 = getelementptr inbounds i8, i8* %30, i64 %35
|
|
|
- %37 = load i8, i8* %36, align 1
|
|
|
- %38 = load i8*, i8** %2, align 8
|
|
|
- %39 = load i32, i32* %4, align 4
|
|
|
- %40 = sext i32 %39 to i64
|
|
|
- %41 = getelementptr inbounds i8, i8* %38, i64 %40
|
|
|
- store i8 %37, i8* %41, align 1
|
|
|
- %42 = load i8, i8* %5, align 1
|
|
|
- %43 = load i8*, i8** %2, align 8
|
|
|
- %44 = load i32, i32* %3, align 4
|
|
|
- %45 = sub nsw i32 %44, 1
|
|
|
- %46 = load i32, i32* %4, align 4
|
|
|
- %47 = sub nsw i32 %45, %46
|
|
|
- %48 = sext i32 %47 to i64
|
|
|
- %49 = getelementptr inbounds i8, i8* %43, i64 %48
|
|
|
- store i8 %42, i8* %49, align 1
|
|
|
- br label %51
|
|
|
-
|
|
|
-50: ; preds = %19
|
|
|
- ret i8* null
|
|
|
-
|
|
|
-51: ; preds = %24
|
|
|
- %52 = load i32, i32* %4, align 4
|
|
|
- %53 = add nsw i32 %52, 1
|
|
|
- store i32 %53, i32* %4, align 4
|
|
|
- br label %target_phi_1
|
|
|
-}
|
|
|
-
|
|
|
-define %fused_return_multiplyMatrices_testPoints @fused_multiplyMatrices(i1 %0, %struct.Matrix* %1, %struct.Matrix* %2, i32 %3) {
|
|
|
-entry:
|
|
|
- %4 = alloca %struct.Matrix*
|
|
|
- %5 = alloca %struct.Matrix*
|
|
|
- %6 = alloca %struct.Matrix*
|
|
|
- %7 = alloca %struct.Matrix*
|
|
|
- %8 = alloca i64
|
|
|
- %9 = alloca i32
|
|
|
- %10 = alloca i32
|
|
|
- %11 = alloca i64
|
|
|
- %12 = alloca i32
|
|
|
- %13 = alloca i64
|
|
|
- %14 = alloca i32
|
|
|
- %15 = alloca i32
|
|
|
- %16 = alloca i32
|
|
|
- %17 = alloca i32
|
|
|
- %18 = alloca i32
|
|
|
- %19 = xor i1 %0, true
|
|
|
- br label %target_cond_0
|
|
|
-
|
|
|
-target_cond_0: ; preds = %entry
|
|
|
- br i1 %0, label %20, label %target_skip_0
|
|
|
-
|
|
|
-target_skip_0: ; preds = %target_cond_0
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-target_phi_0: ; preds = %20, %target_skip_0
|
|
|
- br label %bunker_cond_0
|
|
|
-
|
|
|
-20: ; preds = %target_cond_0
|
|
|
- store i32 %3, i32* %16, align 4
|
|
|
- store i32 0, i32* %17, align 4
|
|
|
- store i32 1, i32* %18, align 4
|
|
|
- br label %target_phi_0
|
|
|
-
|
|
|
-bunker_cond_0: ; preds = %target_phi_0
|
|
|
- br i1 %19, label %21, label %bunker_skip_0
|
|
|
-
|
|
|
-bunker_skip_0: ; preds = %bunker_cond_0
|
|
|
- br label %bunker_phi_0
|
|
|
-
|
|
|
-bunker_phi_0: ; preds = %bunker_skip_0
|
|
|
- br label %target_cond_1
|
|
|
-
|
|
|
-21: ; preds = %bunker_cond_0
|
|
|
- store %struct.Matrix* %1, %struct.Matrix** %5, align 8
|
|
|
- store %struct.Matrix* %2, %struct.Matrix** %6, align 8
|
|
|
- %22 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %23 = icmp ne %struct.Matrix* %22, null
|
|
|
- br i1 %23, label %24, label %27
|
|
|
-
|
|
|
-24: ; preds = %21
|
|
|
- %25 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %26 = icmp ne %struct.Matrix* %25, null
|
|
|
- br i1 %26, label %28, label %27
|
|
|
-
|
|
|
-27: ; preds = %24, %21
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-28: ; preds = %24
|
|
|
- %29 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %30 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %29, i32 0, i32 0
|
|
|
- %31 = load i32**, i32*** %30, align 8
|
|
|
- %32 = icmp ne i32** %31, null
|
|
|
- br i1 %32, label %33, label %38
|
|
|
-
|
|
|
-33: ; preds = %28
|
|
|
- %34 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %35 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %34, i32 0, i32 0
|
|
|
- %36 = load i32**, i32*** %35, align 8
|
|
|
- %37 = icmp ne i32** %36, null
|
|
|
- br i1 %37, label %39, label %38
|
|
|
-
|
|
|
-38: ; preds = %33, %28
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-39: ; preds = %33
|
|
|
- %40 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %41 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %40, i32 0, i32 2
|
|
|
- %42 = load i32, i32* %41, align 4
|
|
|
- %43 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %44 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %43, i32 0, i32 1
|
|
|
- %45 = load i32, i32* %44, align 8
|
|
|
- %46 = icmp ne i32 %42, %45
|
|
|
- br i1 %46, label %47, label %48
|
|
|
-
|
|
|
-47: ; preds = %39
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-48: ; preds = %39
|
|
|
- %49 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %50 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %49, i32 0, i32 2
|
|
|
- %51 = load i32, i32* %50, align 4
|
|
|
- %52 = icmp sgt i32 %51, 100
|
|
|
- br i1 %52, label %58, label %53
|
|
|
-
|
|
|
-53: ; preds = %48
|
|
|
- %54 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %55 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %54, i32 0, i32 1
|
|
|
- %56 = load i32, i32* %55, align 8
|
|
|
- %57 = icmp sgt i32 %56, 100
|
|
|
- br i1 %57, label %58, label %59
|
|
|
-
|
|
|
-58: ; preds = %53, %48
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-59: ; preds = %53
|
|
|
- %60 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %61 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %60, i32 0, i32 1
|
|
|
- %62 = load i32, i32* %61, align 8
|
|
|
- %63 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %63, i32 0, i32 2
|
|
|
- %65 = load i32, i32* %64, align 4
|
|
|
- %66 = call %struct.Matrix* @createMatrix(i32 %62, i32 %65)
|
|
|
- store %struct.Matrix* %66, %struct.Matrix** %7, align 8
|
|
|
- %67 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %68 = icmp ne %struct.Matrix* %67, null
|
|
|
- br i1 %68, label %70, label %69
|
|
|
-
|
|
|
-69: ; preds = %59
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-70: ; preds = %59
|
|
|
- store i64 0, i64* %8, align 8
|
|
|
- store i32 0, i32* %9, align 4
|
|
|
- br label %71
|
|
|
-
|
|
|
-71: ; preds = %202, %70
|
|
|
- %72 = load i32, i32* %9, align 4
|
|
|
- %73 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %74 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %73, i32 0, i32 1
|
|
|
- %75 = load i32, i32* %74, align 8
|
|
|
- %76 = icmp slt i32 %72, %75
|
|
|
- br i1 %76, label %77, label %205
|
|
|
-
|
|
|
-77: ; preds = %71
|
|
|
- store i32 0, i32* %10, align 4
|
|
|
- br label %78
|
|
|
-
|
|
|
-78: ; preds = %198, %77
|
|
|
- %79 = load i32, i32* %10, align 4
|
|
|
- %80 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %81 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %80, i32 0, i32 2
|
|
|
- %82 = load i32, i32* %81, align 4
|
|
|
- %83 = icmp slt i32 %79, %82
|
|
|
- br i1 %83, label %84, label %201
|
|
|
-
|
|
|
-84: ; preds = %78
|
|
|
- store i64 0, i64* %11, align 8
|
|
|
- store i32 0, i32* %12, align 4
|
|
|
- br label %85
|
|
|
-
|
|
|
-85: ; preds = %152, %84
|
|
|
- %86 = load i32, i32* %12, align 4
|
|
|
- %87 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %88 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %87, i32 0, i32 2
|
|
|
- %89 = load i32, i32* %88, align 4
|
|
|
- %90 = icmp slt i32 %86, %89
|
|
|
- br i1 %90, label %91, label %155
|
|
|
-
|
|
|
-91: ; preds = %85
|
|
|
- %92 = load %struct.Matrix*, %struct.Matrix** %5, align 8
|
|
|
- %93 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %92, i32 0, i32 0
|
|
|
- %94 = load i32**, i32*** %93, align 8
|
|
|
- %95 = load i32, i32* %9, align 4
|
|
|
- %96 = sext i32 %95 to i64
|
|
|
- %97 = getelementptr inbounds i32*, i32** %94, i64 %96
|
|
|
- %98 = load i32*, i32** %97, align 8
|
|
|
- %99 = load i32, i32* %12, align 4
|
|
|
- %100 = sext i32 %99 to i64
|
|
|
- %101 = getelementptr inbounds i32, i32* %98, i64 %100
|
|
|
- %102 = load i32, i32* %101, align 4
|
|
|
- %103 = sext i32 %102 to i64
|
|
|
- %104 = load %struct.Matrix*, %struct.Matrix** %6, align 8
|
|
|
- %105 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %104, i32 0, i32 0
|
|
|
- %106 = load i32**, i32*** %105, align 8
|
|
|
- %107 = load i32, i32* %12, align 4
|
|
|
- %108 = sext i32 %107 to i64
|
|
|
- %109 = getelementptr inbounds i32*, i32** %106, i64 %108
|
|
|
- %110 = load i32*, i32** %109, align 8
|
|
|
- %111 = load i32, i32* %10, align 4
|
|
|
- %112 = sext i32 %111 to i64
|
|
|
- %113 = getelementptr inbounds i32, i32* %110, i64 %112
|
|
|
- %114 = load i32, i32* %113, align 4
|
|
|
- %115 = sext i32 %114 to i64
|
|
|
- %116 = mul nsw i64 %103, %115
|
|
|
- store i64 %116, i64* %13, align 8
|
|
|
- %117 = load i64, i64* %13, align 8
|
|
|
- %118 = load i64, i64* %11, align 8
|
|
|
- %119 = add nsw i64 %118, %117
|
|
|
- store i64 %119, i64* %11, align 8
|
|
|
- %120 = load i64, i64* %11, align 8
|
|
|
- %121 = icmp sgt i64 %120, 2147483647
|
|
|
- br i1 %121, label %125, label %122
|
|
|
-
|
|
|
-122: ; preds = %91
|
|
|
- %123 = load i64, i64* %11, align 8
|
|
|
- %124 = icmp slt i64 %123, -2147483648
|
|
|
- br i1 %124, label %125, label %151
|
|
|
-
|
|
|
-125: ; preds = %122, %91
|
|
|
- call void @setErrorMessage(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.24, i64 0, i64 0))
|
|
|
- store i32 0, i32* %14, align 4
|
|
|
- br label %126
|
|
|
-
|
|
|
-126: ; preds = %141, %125
|
|
|
- %127 = load i32, i32* %14, align 4
|
|
|
- %128 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %129 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %128, i32 0, i32 1
|
|
|
- %130 = load i32, i32* %129, align 8
|
|
|
- %131 = icmp slt i32 %127, %130
|
|
|
- br i1 %131, label %132, label %144
|
|
|
-
|
|
|
-132: ; preds = %126
|
|
|
- %133 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %134 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %133, i32 0, i32 0
|
|
|
- %135 = load i32**, i32*** %134, align 8
|
|
|
- %136 = load i32, i32* %14, align 4
|
|
|
- %137 = sext i32 %136 to i64
|
|
|
- %138 = getelementptr inbounds i32*, i32** %135, i64 %137
|
|
|
- %139 = load i32*, i32** %138, align 8
|
|
|
- %140 = bitcast i32* %139 to i8*
|
|
|
- call void @free(i8* %140) #7
|
|
|
- br label %141
|
|
|
-
|
|
|
-141: ; preds = %132
|
|
|
- %142 = load i32, i32* %14, align 4
|
|
|
- %143 = add nsw i32 %142, 1
|
|
|
- store i32 %143, i32* %14, align 4
|
|
|
- br label %126
|
|
|
-
|
|
|
-144: ; preds = %126
|
|
|
- %145 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %146 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %145, i32 0, i32 0
|
|
|
- %147 = load i32**, i32*** %146, align 8
|
|
|
- %148 = bitcast i32** %147 to i8*
|
|
|
- call void @free(i8* %148) #7
|
|
|
- %149 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %150 = bitcast %struct.Matrix* %149 to i8*
|
|
|
- call void @free(i8* %150) #7
|
|
|
- store %struct.Matrix* null, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-151: ; preds = %122
|
|
|
- br label %152
|
|
|
-
|
|
|
-152: ; preds = %151
|
|
|
- %153 = load i32, i32* %12, align 4
|
|
|
- %154 = add nsw i32 %153, 1
|
|
|
- store i32 %154, i32* %12, align 4
|
|
|
- br label %85
|
|
|
-
|
|
|
-155: ; preds = %85
|
|
|
- %156 = load i64, i64* %11, align 8
|
|
|
- %157 = trunc i64 %156 to i32
|
|
|
- %158 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %159 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %158, i32 0, i32 0
|
|
|
- %160 = load i32**, i32*** %159, align 8
|
|
|
- %161 = load i32, i32* %9, align 4
|
|
|
- %162 = sext i32 %161 to i64
|
|
|
- %163 = getelementptr inbounds i32*, i32** %160, i64 %162
|
|
|
- %164 = load i32*, i32** %163, align 8
|
|
|
- %165 = load i32, i32* %10, align 4
|
|
|
- %166 = sext i32 %165 to i64
|
|
|
- %167 = getelementptr inbounds i32, i32* %164, i64 %166
|
|
|
- store i32 %157, i32* %167, align 4
|
|
|
- %168 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %169 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %168, i32 0, i32 0
|
|
|
- %170 = load i32**, i32*** %169, align 8
|
|
|
- %171 = load i32, i32* %9, align 4
|
|
|
- %172 = sext i32 %171 to i64
|
|
|
- %173 = getelementptr inbounds i32*, i32** %170, i64 %172
|
|
|
- %174 = load i32*, i32** %173, align 8
|
|
|
- %175 = load i32, i32* %10, align 4
|
|
|
- %176 = sext i32 %175 to i64
|
|
|
- %177 = getelementptr inbounds i32, i32* %174, i64 %176
|
|
|
- %178 = load i32, i32* %177, align 4
|
|
|
- %179 = call i32 @abs(i32 %178) #8
|
|
|
- %180 = sext i32 %179 to i64
|
|
|
- %181 = load i64, i64* %8, align 8
|
|
|
- %182 = icmp sgt i64 %180, %181
|
|
|
- br i1 %182, label %183, label %197
|
|
|
-
|
|
|
-183: ; preds = %155
|
|
|
- %184 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %185 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %184, i32 0, i32 0
|
|
|
- %186 = load i32**, i32*** %185, align 8
|
|
|
- %187 = load i32, i32* %9, align 4
|
|
|
- %188 = sext i32 %187 to i64
|
|
|
- %189 = getelementptr inbounds i32*, i32** %186, i64 %188
|
|
|
- %190 = load i32*, i32** %189, align 8
|
|
|
- %191 = load i32, i32* %10, align 4
|
|
|
- %192 = sext i32 %191 to i64
|
|
|
- %193 = getelementptr inbounds i32, i32* %190, i64 %192
|
|
|
- %194 = load i32, i32* %193, align 4
|
|
|
- %195 = call i32 @abs(i32 %194) #8
|
|
|
- %196 = sext i32 %195 to i64
|
|
|
- store i64 %196, i64* %8, align 8
|
|
|
- br label %197
|
|
|
-
|
|
|
-197: ; preds = %183, %155
|
|
|
- br label %198
|
|
|
-
|
|
|
-198: ; preds = %197
|
|
|
- %199 = load i32, i32* %10, align 4
|
|
|
- %200 = add nsw i32 %199, 1
|
|
|
- store i32 %200, i32* %10, align 4
|
|
|
- br label %78
|
|
|
-
|
|
|
-201: ; preds = %78
|
|
|
- br label %202
|
|
|
-
|
|
|
-202: ; preds = %201
|
|
|
- %203 = load i32, i32* %9, align 4
|
|
|
- %204 = add nsw i32 %203, 1
|
|
|
- store i32 %204, i32* %9, align 4
|
|
|
- br label %71
|
|
|
-
|
|
|
-205: ; preds = %71
|
|
|
- %206 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %207 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %206, i32 0, i32 1
|
|
|
- %208 = load i32, i32* %207, align 8
|
|
|
- %209 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %210 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %209, i32 0, i32 2
|
|
|
- %211 = load i32, i32* %210, align 4
|
|
|
- %212 = icmp eq i32 %208, %211
|
|
|
- %213 = zext i1 %212 to i32
|
|
|
- %214 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- %215 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %214, i32 0, i32 3
|
|
|
- store i32 %213, i32* %215, align 8
|
|
|
- %216 = load %struct.Matrix*, %struct.Matrix** %7, align 8
|
|
|
- store %struct.Matrix* %216, %struct.Matrix** %4, align 8
|
|
|
- br label %217
|
|
|
-
|
|
|
-217: ; preds = %205, %144, %69, %58, %47, %38, %27
|
|
|
- %218 = load %struct.Matrix*, %struct.Matrix** %4, align 8
|
|
|
- %219 = insertvalue %fused_return_multiplyMatrices_testPoints { i32 0, %struct.Matrix* undef }, %struct.Matrix* %218, 1
|
|
|
- ret %fused_return_multiplyMatrices_testPoints %219
|
|
|
-
|
|
|
-target_cond_1: ; preds = %bunker_phi_0
|
|
|
- br i1 %0, label %220, label %target_skip_1
|
|
|
-
|
|
|
-target_skip_1: ; preds = %target_cond_1
|
|
|
- br label %target_phi_1
|
|
|
-
|
|
|
-target_phi_1: ; preds = %236, %target_skip_1
|
|
|
- ret %fused_return_multiplyMatrices_testPoints zeroinitializer
|
|
|
-
|
|
|
-220: ; preds = %225, %target_cond_1
|
|
|
- %221 = load i32, i32* %17, align 4
|
|
|
- %222 = add nsw i32 %221, 1
|
|
|
- store i32 %222, i32* %17, align 4
|
|
|
- %223 = load i32, i32* %16, align 4
|
|
|
- %224 = icmp sgt i32 %223, 2
|
|
|
- br i1 %224, label %230, label %231
|
|
|
-
|
|
|
-225: ; No predecessors!
|
|
|
- %226 = load i32, i32* %18, align 4
|
|
|
- %227 = icmp slt i32 %226, 5
|
|
|
- br i1 %227, label %220, label %228
|
|
|
-
|
|
|
-228: ; preds = %225
|
|
|
- %229 = load i32, i32* %17, align 4
|
|
|
- store i32 %229, i32* %15, align 4
|
|
|
- br label %232
|
|
|
-
|
|
|
-230: ; preds = %220
|
|
|
- store i32 23, i32* %15, align 4
|
|
|
- br label %232
|
|
|
-
|
|
|
-231: ; preds = %220
|
|
|
- br label %236
|
|
|
-
|
|
|
-232: ; preds = %230, %228
|
|
|
- %233 = load i32, i32* %15, align 4
|
|
|
- %234 = insertvalue %fused_return_multiplyMatrices_testPoints undef, i32 %233, 0
|
|
|
- %235 = insertvalue %fused_return_multiplyMatrices_testPoints %234, %struct.Matrix* null, 1
|
|
|
- ret %fused_return_multiplyMatrices_testPoints %235
|
|
|
-
|
|
|
-236: ; preds = %231
|
|
|
- %237 = load i32, i32* %18, align 4
|
|
|
- %238 = add nsw i32 %237, 1
|
|
|
- store i32 %238, i32* %18, align 4
|
|
|
- br label %target_phi_1
|
|
|
-}
|
|
|
-
|
|
|
-attributes #0 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
-attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
-attributes #2 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
-attributes #3 = { nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
-attributes #4 = { nounwind readnone speculatable willreturn }
|
|
|
-attributes #5 = { nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
-attributes #6 = { argmemonly nounwind willreturn }
|
|
|
-attributes #7 = { nounwind }
|
|
|
-attributes #8 = { nounwind readnone }
|
|
|
-attributes #9 = { readnone }
|
|
|
-attributes #10 = { nounwind readonly }
|
|
|
-
|
|
|
-!llvm.ident = !{!0, !0}
|
|
|
-!llvm.module.flags = !{!1}
|
|
|
-
|
|
|
-!0 = !{!"clang version 10.0.0-4ubuntu1 "}
|
|
|
-!1 = !{i32 1, !"wchar_size", i32 4}
|
|
|
-!2 = !{!"Bunker"}
|